From e13108f3db497d7e278df7b634832e7087dc4445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 12 Mar 2024 16:53:55 +0000 Subject: [PATCH 01/36] Add changes to private context and inputs --- .../aztec-nr/aztec/src/context/private_context.nr | 10 ++++++++++ .../types/src/abis/private_circuit_public_inputs.nr | 6 ++++++ .../src/tests/private_circuit_public_inputs_builder.nr | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/noir-projects/aztec-nr/aztec/src/context/private_context.nr b/noir-projects/aztec-nr/aztec/src/context/private_context.nr index 30c6d140273..5fc293a70b2 100644 --- a/noir-projects/aztec-nr/aztec/src/context/private_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/private_context.nr @@ -45,6 +45,8 @@ struct PrivateContext { args_hash : Field, return_values : BoundedVec, + max_block_number: u32, + note_hash_read_requests: BoundedVec, nullifier_read_requests: BoundedVec, nullifier_key_validation_requests: BoundedVec, @@ -124,6 +126,7 @@ impl PrivateContext { min_revertible_side_effect_counter, args_hash, return_values: BoundedVec::new(), + max_block_number: 4294967295, // TODO: replace with u32::MAX once it's implemented note_hash_read_requests: BoundedVec::new(), nullifier_read_requests: BoundedVec::new(), nullifier_key_validation_requests: BoundedVec::new(), @@ -168,6 +171,7 @@ impl PrivateContext { // I've had to initialize the counter here so that it would work for contract deployments // the above checks should be doable after we figure out fee payments for contract deployments min_revertible_side_effect_counter: self.min_revertible_side_effect_counter, + max_block_number: self.max_block_number, note_hash_read_requests: self.note_hash_read_requests.storage, nullifier_read_requests: self.nullifier_read_requests.storage, nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage, @@ -193,6 +197,12 @@ impl PrivateContext { self.min_revertible_side_effect_counter = self.side_effect_counter; } + pub fn request_max_block_number(&mut self, max_block_number: u32) { + if max_block_number < self.max_block_number { + self.max_block_number = max_block_number; + } + } + pub fn push_note_hash_read_request(&mut self, note_hash: Field) { let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter }; self.note_hash_read_requests.push(side_effect); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr index a36c0e4d4bd..2752fe72e91 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr @@ -24,6 +24,8 @@ struct PrivateCircuitPublicInputs { min_revertible_side_effect_counter: u32, + max_block_number: u32, + note_hash_read_requests: [SideEffect; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL], nullifier_key_validation_requests: [NullifierKeyValidationRequest; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL], @@ -60,6 +62,7 @@ impl Eq for PrivateCircuitPublicInputs { self.call_context.eq(other.call_context) & self.args_hash.eq(other.args_hash) & (self.return_values == other.return_values) & + (self.max_block_number == other.max_block_number) & (self.note_hash_read_requests == other.note_hash_read_requests) & (self.nullifier_read_requests == other.nullifier_read_requests) & (self.nullifier_key_validation_requests == other.nullifier_key_validation_requests) & @@ -89,6 +92,8 @@ impl Serialize for PrivateCircuitPublicInp fields.push(self.min_revertible_side_effect_counter as Field); + fields.push(self.max_block_number as Field); + for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL{ fields.extend_from_array(self.note_hash_read_requests[i].serialize()); } @@ -134,6 +139,7 @@ impl Deserialize for PrivateCircuitPublicI args_hash: reader.read(), return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), min_revertible_side_effect_counter: reader.read() as u32, + max_block_number: reader.read() as u32, note_hash_read_requests: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]), nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]), nullifier_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL]), diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr index 2f23306a1c0..2e1e6490e4d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -26,6 +26,8 @@ struct PrivateCircuitPublicInputsBuilder { min_revertible_side_effect_counter: u32, + max_block_number: u32, + note_hash_read_requests: BoundedVec, nullifier_read_requests: BoundedVec, nullifier_key_validation_requests: BoundedVec, @@ -95,6 +97,7 @@ impl PrivateCircuitPublicInputsBuilder { }; public_inputs.call_context = call_context; public_inputs.args_hash = args_hash; + public_inputs.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented public_inputs.contract_deployment_data = contract_deployment_data; public_inputs.historical_header = fixtures::HEADER; public_inputs.chain_id = 0; @@ -109,6 +112,7 @@ impl PrivateCircuitPublicInputsBuilder { args_hash: self.args_hash, return_values: self.return_values.storage, min_revertible_side_effect_counter: self.min_revertible_side_effect_counter, + max_block_number: self.max_block_number, note_hash_read_requests: self.note_hash_read_requests.storage, nullifier_read_requests: self.nullifier_read_requests.storage, nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage, From 2185b606afc75ad855ec501d823cd78050d74af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 12 Mar 2024 18:42:19 +0000 Subject: [PATCH 02/36] Do private kernel data --- .../crates/private-kernel-lib/src/common.nr | 9 +++++++++ .../crates/private-kernel-lib/src/private_kernel_init.nr | 2 ++ .../accumulated_non_revertible_data_builder.nr | 2 ++ .../abis/accumulated_data/combined_accumulated_data.nr | 2 ++ .../combined_accumulated_data_builder.nr | 6 ++++++ .../private_accumulated_non_revertible_data.nr | 1 + .../src/structs/kernel/combined_accumulated_data.ts | 8 +++++++- 7 files changed, 29 insertions(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr index 49076a1a403..d5114569bbf 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr @@ -92,6 +92,8 @@ pub fn initialize_end_values( // functions within this circuit: let start = previous_kernel.public_inputs.end; + public_inputs.end.max_block_number = start.max_block_number; + public_inputs.end.note_hash_read_requests = array_to_bounded_vec(start.note_hash_read_requests); public_inputs.end.nullifier_read_requests = array_to_bounded_vec(start.nullifier_read_requests); public_inputs.end.nullifier_key_validation_requests = array_to_bounded_vec(start.nullifier_key_validation_requests); @@ -178,6 +180,9 @@ pub fn update_end_values( let storage_contract_address = private_call_public_inputs.call_context.storage_contract_address; + // Update the max block number if the private call requested a lower one. + public_inputs.end.max_block_number = min(public_inputs.end.max_block_number, private_call_public_inputs.max_block_number); + // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) let read_requests = private_call_public_inputs.note_hash_read_requests; @@ -457,3 +462,7 @@ pub fn compute_siloed_nullifier_secret_key(secret_key: GrumpkinPrivateKey, contr ); field_to_grumpkin_private_key(hash) } + +fn min(lhs: T, rhs: T) -> T where T: Ord { + if lhs < rhs { lhs } else { rhs } +} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr index 6da43c3f9ba..881dd922a6e 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr @@ -19,6 +19,8 @@ struct PrivateKernelInitCircuitPrivateInputs { impl PrivateKernelInitCircuitPrivateInputs { fn initialize_end_values(self, public_inputs: &mut PrivateKernelCircuitPublicInputsBuilder) { + public_inputs.end.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented + public_inputs.constants = CombinedConstantData { historical_header: self.private_call.call_stack_item.public_inputs.historical_header, tx_context: self.tx_request.tx_context, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr index fea3f3bde43..a198e7cde72 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr @@ -16,6 +16,7 @@ use crate::constants::{ }; struct AccumulatedNonRevertibleDataBuilder { + max_block_number: u32, new_note_hashes: BoundedVec, new_nullifiers: BoundedVec, public_call_stack: BoundedVec, @@ -26,6 +27,7 @@ struct AccumulatedNonRevertibleDataBuilder { impl AccumulatedNonRevertibleDataBuilder { pub fn to_private(self) -> PrivateAccumulatedNonRevertibleData { PrivateAccumulatedNonRevertibleData { + max_block_number: self.max_block_number, new_note_hashes: self.new_note_hashes.storage, new_nullifiers: self.new_nullifiers.storage, public_call_stack: self.public_call_stack.storage diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr index 7ce04e9e935..7aec1018d9f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr @@ -29,6 +29,8 @@ use crate::traits::is_empty; use crate::utils::arrays::{array_cp, array_concat, array_to_bounded_vec}; struct CombinedAccumulatedData { + max_block_number: u32, + note_hash_read_requests: [SideEffect; MAX_NOTE_HASH_READ_REQUESTS_PER_TX], nullifier_read_requests: [ReadRequestContext; MAX_NULLIFIER_READ_REQUESTS_PER_TX], nullifier_key_validation_requests: [NullifierKeyValidationRequestContext; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX], diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr index d949da09d6a..1112e731f22 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr @@ -34,6 +34,8 @@ use crate::traits::is_empty; use crate::utils::arrays::{array_cp, array_concat, array_to_bounded_vec}; struct CombinedAccumulatedDataBuilder { + max_block_number: u32, + note_hash_read_requests: BoundedVec, nullifier_read_requests: BoundedVec, nullifier_key_validation_requests: BoundedVec, @@ -101,6 +103,7 @@ impl CombinedAccumulatedDataBuilder { pub fn finish(self) -> CombinedAccumulatedData { CombinedAccumulatedData { + max_block_number: self.max_block_number, note_hash_read_requests: self.note_hash_read_requests.storage, nullifier_read_requests: self.nullifier_read_requests.storage, nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage, @@ -161,6 +164,9 @@ impl CombinedAccumulatedDataBuilder { let mut non_revertible_builder: AccumulatedNonRevertibleDataBuilder = unsafe::zeroed(); let mut revertible_builder: AccumulatedRevertibleDataBuilder = unsafe::zeroed(); + // The max block number is always non-revertible + non_revertible_builder.max_block_number = self.max_block_number; + for i in 0..MAX_NEW_NOTE_HASHES_PER_TX { let commitment = self.new_note_hashes.storage[i]; // TODO(fees) we shouldn't need to check is_empty here, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr index 017df083bb3..72aba3b6f5f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr @@ -5,6 +5,7 @@ use crate::constants::{ }; struct PrivateAccumulatedNonRevertibleData { + max_block_number: u32, new_note_hashes: [SideEffect; MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX], public_call_stack: [CallRequest; MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX], diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index 246f48b8983..1fa454cae3c 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -668,6 +668,10 @@ export class PrivateAccumulatedRevertibleData { export class PrivateAccumulatedNonRevertibleData { constructor( + /** + * The maximum block number in which this transaction can be included and be valid. + */ + public maxBlockNumber: Fr, /** * The new non-revertible commitments made in this transaction. */ @@ -683,12 +687,13 @@ export class PrivateAccumulatedNonRevertibleData { ) {} toBuffer() { - return serializeToBuffer(this.newNoteHashes, this.newNullifiers, this.publicCallStack); + return serializeToBuffer(this.maxBlockNumber, this.newNoteHashes, this.newNullifiers, this.publicCallStack); } static fromBuffer(buffer: Buffer | BufferReader): PrivateAccumulatedNonRevertibleData { const reader = BufferReader.asReader(buffer); return new PrivateAccumulatedNonRevertibleData( + Fr.fromBuffer(reader), reader.readArray(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect), reader.readArray(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), reader.readArray(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), @@ -705,6 +710,7 @@ export class PrivateAccumulatedNonRevertibleData { static empty() { return new PrivateAccumulatedNonRevertibleData( + new Fr(2n << (32n - 1n)), // an 'empty' max block number is one with no constraints, i.e. the largest possible one makeTuple(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect.empty), makeTuple(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), From a0bfd27de5bb52e841384a33e5b97615bd3c9a0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 12 Mar 2024 19:43:10 +0000 Subject: [PATCH 03/36] Do public kernel data --- .../crates/private-kernel-lib/src/common.nr | 7 +++++++ .../crates/public-kernel-lib/src/common.nr | 5 +++++ .../accumulated_non_revertible_data_builder.nr | 1 + .../src/abis/accumulated_data/combined_accumulated_data.nr | 1 + .../accumulated_data/combined_accumulated_data_builder.nr | 1 + .../public_accumulated_non_revertible_data.nr | 1 + .../noir-protocol-circuits/crates/types/src/constants.nr | 4 ++-- 7 files changed, 18 insertions(+), 2 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr index d5114569bbf..92cd284b484 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr @@ -466,3 +466,10 @@ pub fn compute_siloed_nullifier_secret_key(secret_key: GrumpkinPrivateKey, contr fn min(lhs: T, rhs: T) -> T where T: Ord { if lhs < rhs { lhs } else { rhs } } + +#[test] +fn test_min() { + assert(min(3, 5) == 3); + assert(min(5, 3) == 3); + assert(min(3, 3) == 3); +} diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr index 0d1b854a080..7a80ef1e1f6 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr @@ -67,6 +67,9 @@ pub fn initialize_end_values( circuit_outputs.end.new_contracts = array_to_bounded_vec(previous_kernel.public_inputs.end.new_contracts); let start_non_revertible = previous_kernel.public_inputs.end_non_revertible; + + circuit_outputs.end_non_revertible.max_block_number = start_non_revertible.max_block_number; + circuit_outputs.end_non_revertible.new_note_hashes = array_to_bounded_vec(start_non_revertible.new_note_hashes); circuit_outputs.end_non_revertible.new_nullifiers = array_to_bounded_vec(start_non_revertible.new_nullifiers); circuit_outputs.end_non_revertible.public_call_stack = array_to_bounded_vec(start_non_revertible.public_call_stack); @@ -144,6 +147,8 @@ pub fn update_public_end_non_revertible_values( validate_call_requests(public_call_requests, hashes, public_call); circuit_outputs.end_non_revertible.public_call_stack.extend_from_bounded_vec(public_call_requests); + // Note that public calls cannot modify the max block number value + propagate_new_nullifiers_non_revertible(public_call, circuit_outputs); propagate_new_note_hashes_non_revertible(public_call, circuit_outputs); propagate_valid_non_revertible_public_data_update_requests(public_call, circuit_outputs); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr index a198e7cde72..454af422a7a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr @@ -35,6 +35,7 @@ impl AccumulatedNonRevertibleDataBuilder { } pub fn to_public(self) -> PublicAccumulatedNonRevertibleData { PublicAccumulatedNonRevertibleData { + max_block_number: self.max_block_number, new_note_hashes: self.new_note_hashes.storage, new_nullifiers: self.new_nullifiers.storage, public_call_stack: self.public_call_stack.storage, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr index 7aec1018d9f..238272f950b 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr @@ -68,6 +68,7 @@ impl CombinedAccumulatedData { revertible: PublicAccumulatedRevertibleData ) -> CombinedAccumulatedData { CombinedAccumulatedData { + max_block_number: non_revertible.max_block_number, note_hash_read_requests: revertible.note_hash_read_requests, nullifier_read_requests: revertible.nullifier_read_requests, nullifier_key_validation_requests: revertible.nullifier_key_validation_requests, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr index 1112e731f22..025c3dde6f9 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr @@ -68,6 +68,7 @@ impl CombinedAccumulatedDataBuilder { revertible: PublicAccumulatedRevertibleData ) -> CombinedAccumulatedDataBuilder { CombinedAccumulatedDataBuilder { + max_block_number: non_revertible.max_block_number, note_hash_read_requests: array_to_bounded_vec(revertible.note_hash_read_requests), nullifier_read_requests: array_to_bounded_vec(revertible.nullifier_read_requests), nullifier_key_validation_requests: array_to_bounded_vec(revertible.nullifier_key_validation_requests), diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr index 4df61024f02..1d5aa1f6beb 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr @@ -17,6 +17,7 @@ use crate::traits::is_empty; use crate::utils::arrays::{array_cp, array_concat, array_to_bounded_vec}; struct PublicAccumulatedNonRevertibleData { + max_block_number: u32, new_note_hashes: [SideEffect; MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX], public_call_stack: [CallRequest; MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX], diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index b9089b7d6f4..cb18de35575 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -162,11 +162,11 @@ global NEW_CONTRACT_DATA_LENGTH: u64 = 3; global NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH = 4; global NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH = 5; global PARTIAL_STATE_REFERENCE_LENGTH: u64 = 8; -global PRIVATE_CALL_STACK_ITEM_LENGTH: u64 = 223; +global PRIVATE_CALL_STACK_ITEM_LENGTH: u64 = 224; // Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. // In other words, if the structure/size of the public inputs of a function call changes then we should change this // constant as well PRIVATE_CALL_STACK_ITEM_LENGTH -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u64 = 218; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u64 = 219; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: u64 = 194; global STATE_REFERENCE_LENGTH: u64 = 10; // 2 for snap + 8 for partial From ec6c4dea40925ae4fa65c5086e0bcd27a6b1b075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 13 Mar 2024 15:02:36 +0000 Subject: [PATCH 04/36] Update rollup circuits --- .../crates/public-kernel-lib/src/common.nr | 2 +- .../rollup-lib/src/base/base_rollup_inputs.nr | 23 +++++++++++++++++++ .../types/src/tests/kernel_data_builder.nr | 14 +++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr index 7a80ef1e1f6..c49708b6870 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr @@ -147,7 +147,7 @@ pub fn update_public_end_non_revertible_values( validate_call_requests(public_call_requests, hashes, public_call); circuit_outputs.end_non_revertible.public_call_stack.extend_from_bounded_vec(public_call_requests); - // Note that public calls cannot modify the max block number value + // Note that the public kernel cannot modify the max block number value propagate_new_nullifiers_non_revertible(public_call, circuit_outputs); propagate_new_note_hashes_non_revertible(public_call, circuit_outputs); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr index 7d39a64671e..03eedf5d0ea 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -72,6 +72,13 @@ impl BaseRollupInputs { == self.constants.global_variables.version, "kernel version does not match the rollup version" ); + // Verify the max block number + // TODO: why is block_number a Field and not u32? + assert( + self.constants.global_variables.block_number as u32 + <= self.kernel_data.public_inputs.end.max_block_number, "kernel max_block_number is smaller than block number" + ); + // First we compute the contract tree leaves let contract_leaves = self.calculate_contract_leaves(); @@ -1301,6 +1308,22 @@ mod tests { builder.fails(); } + #[test(should_fail_with = "kernel max_block_number is smaller than block number")] + unconstrained fn constants_dont_satisfy_smaller_max_block_number() { + let mut builder = BaseRollupInputsBuilder::new(); + builder.constants.global_variables.block_number = 42; + builder.kernel_data.set_max_block_number(5); + builder.fails(); + } + + #[test] + unconstrained fn constants_satisfy_equal_max_block_number() { + let mut builder = BaseRollupInputsBuilder::new(); + builder.constants.global_variables.block_number = 42; + builder.kernel_data.set_max_block_number(42); + builder.succeeds(); + } + #[test] unconstrained fn subtree_height_is_0() { let outputs = BaseRollupInputsBuilder::new().execute(); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr index 31704bb1b6e..237643426f7 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr @@ -53,6 +53,12 @@ impl PreviousKernelDataBuilder { end.new_nullifiers.push(tx_nullifier); } + // TODO: the builder makes a distinction between building a kernel for public and for private, but + // max_block_number lives in end_non_revertible for public, and end for private and rollup. We therefore store + // it in both places. + end_non_revertible.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented + end.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented + let tx_context = build_tx_context(false, 0); PreviousKernelDataBuilder { @@ -78,6 +84,14 @@ impl PreviousKernelDataBuilder { *self } + pub fn set_max_block_number(&mut self, max_block_number: u32) { + // TODO: the builder makes a distinction between building a kernel for public and for private, but + // max_block_number lives in end_non_revertible for public, and end for private and rollup. We therefore store + // it in both places. + self.end_non_revertible.max_block_number = max_block_number; // TODO: replace with u32::MAX once it's implemented + self.end.max_block_number = max_block_number; // TODO: replace with u32::MAX once it's implemented + } + pub fn append_public_data_update_requests(&mut self, num_updates: u64) { let value_offset = self.end.public_data_update_requests.len(); for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { From 373eeb012f34acc27163510affaa24863db2e8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 13 Mar 2024 15:02:42 +0000 Subject: [PATCH 05/36] Add private tests --- .../src/private_kernel_init.nr | 17 +++++++++++ .../src/private_kernel_inner.nr | 30 +++++++++++++++++++ .../src/private_kernel_tail.nr | 9 ++++++ .../combined_accumulated_data_builder.nr | 2 +- .../src/tests/private_call_data_builder.nr | 4 +++ 5 files changed, 61 insertions(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr index 881dd922a6e..e9b2507bb6b 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr @@ -504,6 +504,23 @@ mod tests { builder.failed(); } + #[test] + fn default_max_block_number() { + let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); + let public_inputs = builder.execute(); + + assert_eq(public_inputs.end.max_block_number, 4294967295); + } + + #[test] + fn propagate_max_block_number_request() { + let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); + builder.private_call.request_max_block_number(42); + let public_inputs = builder.execute(); + + assert_eq(public_inputs.end.max_block_number, 42); + } + #[test] fn native_no_note_hash_read_requests_works() { let mut builder = PrivateKernelInitInputsBuilder::new(); diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr index 4b2fd76d3b1..7b2d1900361 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -604,6 +604,36 @@ mod tests { builder.failed(); } + #[test] + fn propagate_previous_kernel_max_block_number() { + let mut builder = PrivateKernelInnerInputsBuilder::new(); + builder.previous_kernel.end.max_block_number = 13; + let public_inputs = builder.execute(); + + assert_eq(public_inputs.end.max_block_number, 13); + } + + #[test] + fn propagate_max_block_number_request() { + let mut builder = PrivateKernelInnerInputsBuilder::new(); + builder.private_call.request_max_block_number(42); + let public_inputs = builder.execute(); + + assert_eq(public_inputs.end.max_block_number, 42); + } + + #[test] + fn ignore_larger_max_block_number() { + let mut builder = PrivateKernelInnerInputsBuilder::new(); + builder.previous_kernel.end.max_block_number = 13; + // A private call requesting a larger max_block_number should not change the current one as that constraint is + // already satisfied. + builder.private_call.request_max_block_number(42); + let public_inputs = builder.execute(); + + assert_eq(public_inputs.end.max_block_number, 13); + } + #[test] fn native_no_note_hash_read_requests_works() { let mut builder = PrivateKernelInnerInputsBuilder::new(); diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr index a5d939506c9..92f44def250 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr @@ -459,6 +459,15 @@ mod tests { builder.failed(); } + #[test] + fn propagate_previous_kernel_max_block_number() { + let mut builder = PrivateKernelTailInputsBuilder::new(); + builder.previous_kernel.end.max_block_number = 13; + let public_inputs = builder.execute(); + + assert_eq(public_inputs.end_non_revertible.max_block_number, 13); + } + #[test] unconstrained fn one_pending_nullifier_read_request() { let mut builder = PrivateKernelTailInputsBuilder::new(); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr index 025c3dde6f9..229efd2731a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr @@ -165,7 +165,7 @@ impl CombinedAccumulatedDataBuilder { let mut non_revertible_builder: AccumulatedNonRevertibleDataBuilder = unsafe::zeroed(); let mut revertible_builder: AccumulatedRevertibleDataBuilder = unsafe::zeroed(); - // The max block number is always non-revertible + // The max block number is always non-revertible as it is part of the validity conditions of the transaction. non_revertible_builder.max_block_number = self.max_block_number; for i in 0..MAX_NEW_NOTE_HASHES_PER_TX { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr index f86b5767eeb..8db94c5099d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr @@ -156,6 +156,10 @@ impl PrivateCallDataBuilder { (hashes, call_requests) } + pub fn request_max_block_number(&mut self, max_block_number: u32) { + self.public_inputs.max_block_number = max_block_number; + } + pub fn append_note_hash_read_requests(&mut self, num_read_requests: u64) { let (read_requests, read_request_membership_witnesses) = fixtures::note_hash_read_requests::generate_note_hash_read_requests(num_read_requests); self.public_inputs.note_hash_read_requests.extend_from_bounded_vec(read_requests); From ec3f8f5e25c4d1e83da3f234ab03bdc72c780cda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 13 Mar 2024 15:27:45 +0000 Subject: [PATCH 06/36] Add public tests --- .../crates/public-kernel-lib/src/public_kernel_setup.nr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr index 444c47189f1..363a77f42ff 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr @@ -376,6 +376,9 @@ mod tests { #[test] fn circuit_outputs_should_be_correctly_populated_with_previous_private_kernel() { let mut builder = PublicKernelSetupCircuitPrivateInputsBuilder::new(); + + builder.previous_kernel.end_non_revertible.max_block_number = 13; + let new_contracts = [ NewContractData { contract_address: AztecAddress::from_field(123), @@ -412,6 +415,7 @@ mod tests { let public_inputs = kernel.public_kernel_setup(); + assert_eq(public_inputs.end_non_revertible.max_block_number, 13); assert_eq_new_contracts(public_inputs.end.new_contracts, new_contracts); assert_eq_call_requests(public_inputs.end.private_call_stack, []); assert_eq_call_requests( From eec3f8a39f6599ce4dee3a6a81514e8e59597014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 13 Mar 2024 15:29:30 +0000 Subject: [PATCH 07/36] Add rollup tests --- .../crates/rollup-lib/src/base/base_rollup_inputs.nr | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr index 03eedf5d0ea..096561abea8 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -1324,6 +1324,14 @@ mod tests { builder.succeeds(); } + #[test] + unconstrained fn constants_satisfy_larger_max_block_number() { + let mut builder = BaseRollupInputsBuilder::new(); + builder.constants.global_variables.block_number = 42; + builder.kernel_data.set_max_block_number(4294967295); + builder.succeeds(); + } + #[test] unconstrained fn subtree_height_is_0() { let outputs = BaseRollupInputsBuilder::new().execute(); From 1a78d66c576c02086475d5516a3e140d731d6e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 13 Mar 2024 16:15:23 +0000 Subject: [PATCH 08/36] Fix circuit tests --- .../src/core/libraries/ConstantsGen.sol | 19 +-- .../types/src/abis/private_call_stack_item.nr | 2 +- .../src/abis/private_circuit_public_inputs.nr | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 4 +- .../private_call_stack_item.test.ts.snap | 124 ++++++++--------- ...private_circuit_public_inputs.test.ts.snap | 126 +++++++++--------- .../kernel/combined_accumulated_data.ts | 2 +- .../structs/private_circuit_public_inputs.ts | 47 ++++--- .../circuits.js/src/tests/factories.ts | 2 + 9 files changed, 167 insertions(+), 161 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index d716ea64474..c7728e9646b 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -79,16 +79,11 @@ library Constants { uint256 internal constant MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS = 8000; uint256 internal constant MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS = 500; uint256 internal constant MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS = 500; - uint256 internal constant REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE = - 0x6999d1e02b08a447a463563453cb36919c9dd7150336fc7c4d2b52f8; - uint256 internal constant REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = - 0x1b70e95fde0b70adc30496b90a327af6a5e383e028e7a43211a07bcd; - uint256 internal constant REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE = - 0xe7af816635466f128568edb04c9fa024f6c87fb9010fdbffa68b3d99; - uint256 internal constant DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE = - 0x85864497636cf755ae7bde03f267ce01a520981c21c3682aaf82a631; - uint256 internal constant DEPLOYER_CONTRACT_ADDRESS = - 0x0747a20ed0c86035e44ea5606f30de459f40b55c5e82012640aa554546af9044; + uint256 internal constant REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE = 0x6999d1e02b08a447a463563453cb36919c9dd7150336fc7c4d2b52f8; + uint256 internal constant REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = 0x1b70e95fde0b70adc30496b90a327af6a5e383e028e7a43211a07bcd; + uint256 internal constant REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE = 0xe7af816635466f128568edb04c9fa024f6c87fb9010fdbffa68b3d99; + uint256 internal constant DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE = 0x85864497636cf755ae7bde03f267ce01a520981c21c3682aaf82a631; + uint256 internal constant DEPLOYER_CONTRACT_ADDRESS = 0x0747a20ed0c86035e44ea5606f30de459f40b55c5e82012640aa554546af9044; uint256 internal constant L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH = 17; uint256 internal constant MAX_NOTE_FIELDS_LENGTH = 20; uint256 internal constant GET_NOTE_ORACLE_RETURN_LENGTH = 23; @@ -112,8 +107,8 @@ library Constants { uint256 internal constant NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH = 4; uint256 internal constant NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH = 5; uint256 internal constant PARTIAL_STATE_REFERENCE_LENGTH = 8; - uint256 internal constant PRIVATE_CALL_STACK_ITEM_LENGTH = 223; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 218; + uint256 internal constant PRIVATE_CALL_STACK_ITEM_LENGTH = 224; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 219; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 194; uint256 internal constant STATE_REFERENCE_LENGTH = 10; uint256 internal constant TX_CONTEXT_DATA_LENGTH = 11; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr index cdf79b46085..78d0fccaf65 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr @@ -75,5 +75,5 @@ fn empty_hash() { let hash = item.hash(); // Value from private_call_stack_item.test.ts "computes empty item hash" test - assert_eq(hash, 0x19ee1f10c5c0508a8d727da00c97b8198522d7a17fab73eb804f24183177b798); + assert_eq(hash, 0x2dbafe533ce9b51cdec8d0338e4df64059b5f0b0860b26abd1824b658367ff35); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr index 2752fe72e91..bb5934ec400 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr @@ -184,5 +184,5 @@ fn empty_hash() { let hash = inputs.hash(); // Value from private_circuit_public_inputs.test.ts "computes empty item hash" test - assert_eq(hash, 0x13ba2af75e4afaa4e52dd1afa083e87706cdbab1a33442025dc3a9bbb546d207); + assert_eq(hash, 0x125fa609ba4be385c61f44b5b89b869d385a0c025b100568130fad52211cf94d); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 3a7db288043..1abc7da8088 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -97,8 +97,8 @@ export const NEW_CONTRACT_DATA_LENGTH = 3; export const NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH = 4; export const NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH = 5; export const PARTIAL_STATE_REFERENCE_LENGTH = 8; -export const PRIVATE_CALL_STACK_ITEM_LENGTH = 223; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 218; +export const PRIVATE_CALL_STACK_ITEM_LENGTH = 224; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 219; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 194; export const STATE_REFERENCE_LENGTH = 10; export const TX_CONTEXT_DATA_LENGTH = 11; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap index b33e985b0ed..b224bb72e02 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap @@ -2,41 +2,41 @@ exports[`PrivateCallStackItem computes empty item hash 1`] = ` Fr { - "asBigInt": 11728545222320447463870615847019406452447697153424151627800539679719144535960n, + "asBigInt": 20684467027958304316392101103750062065585698258661695840425319450005987655477n, "asBuffer": { "data": [ - 25, - 238, - 31, - 16, - 197, - 192, - 80, - 138, - 141, - 114, - 125, - 160, - 12, - 151, - 184, - 25, - 133, - 34, - 215, - 161, - 127, + 45, + 186, + 254, + 83, + 60, + 233, + 181, + 28, + 222, + 200, + 208, + 51, + 142, + 77, + 246, + 64, + 89, + 181, + 240, + 176, + 134, + 11, + 38, 171, - 115, - 235, - 128, - 79, - 36, - 24, - 49, - 119, - 183, - 152, + 209, + 130, + 75, + 101, + 131, + 103, + 255, + 53, ], "type": "Buffer", }, @@ -45,41 +45,41 @@ Fr { exports[`PrivateCallStackItem computes hash 1`] = ` Fr { - "asBigInt": 6461024313550232992012690944449959956801421547254954441618992574842987860340n, + "asBigInt": 7438218616968792922001637713233227987470924553252444995114189182609496411594n, "asBuffer": { "data": [ - 14, - 72, - 207, - 103, - 60, - 81, - 67, - 141, - 102, - 164, - 56, - 11, + 16, + 113, + 225, + 238, + 113, + 50, + 237, + 1, + 162, + 18, + 197, + 59, + 214, + 236, + 79, + 170, 55, - 163, - 108, - 206, - 136, - 68, - 246, - 140, - 171, - 112, - 139, - 222, - 67, - 9, + 223, + 2, 45, + 187, + 18, + 180, + 182, + 193, + 200, + 98, + 185, + 107, 31, - 20, - 79, - 209, - 116, + 13, + 202, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap index 658eb5ad80c..c165f23e0e8 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap @@ -2,41 +2,41 @@ exports[`PrivateCircuitPublicInputs computes empty inputs hash 1`] = ` Fr { - "asBigInt": 8922874219514432875012773391923445472064121190200882885713359100997704012295n, + "asBigInt": 8310627697805133815424648194774253206305695641195845252860023836876337903949n, "asBuffer": { "data": [ - 19, + 18, + 95, + 166, + 9, 186, - 42, - 247, - 94, - 74, - 250, - 164, - 229, - 45, - 209, - 175, - 160, - 131, - 232, - 119, - 6, - 205, - 186, - 177, - 163, - 52, - 66, - 2, - 93, - 195, - 169, - 187, + 75, + 227, + 133, + 198, + 31, + 68, 181, - 70, - 210, - 7, + 184, + 155, + 134, + 157, + 56, + 90, + 12, + 2, + 91, + 16, + 5, + 104, + 19, + 15, + 173, + 82, + 33, + 28, + 249, + 77, ], "type": "Buffer", }, @@ -45,41 +45,41 @@ Fr { exports[`PrivateCircuitPublicInputs hash matches snapshot 1`] = ` Fr { - "asBigInt": 7066918351069413889843757132918099018108150218337345110167110186913735749525n, + "asBigInt": 5000688400975996724907548197487388544356468905029975181575474522882439962329n, "asBuffer": { "data": [ - 15, - 159, - 187, - 234, - 36, - 85, - 47, - 1, - 117, - 177, - 232, - 159, - 46, - 23, - 164, - 203, - 100, - 106, - 64, - 164, - 198, - 12, - 59, - 118, - 51, - 144, - 90, - 35, - 200, + 11, + 14, + 74, + 17, + 190, + 231, + 31, + 17, + 77, + 170, + 228, + 246, + 240, + 236, + 94, + 127, + 246, + 123, + 223, + 189, + 95, 25, - 175, - 149, + 53, + 125, + 165, + 254, + 136, + 10, + 61, + 92, + 222, + 217, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index 1fa454cae3c..a3800716674 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -710,7 +710,7 @@ export class PrivateAccumulatedNonRevertibleData { static empty() { return new PrivateAccumulatedNonRevertibleData( - new Fr(2n << (32n - 1n)), // an 'empty' max block number is one with no constraints, i.e. the largest possible one + new Fr(0), makeTuple(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect.empty), makeTuple(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index af8fd80dac8..0a9efb6fa8e 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -33,6 +33,10 @@ import { ReadRequest } from './read_request.js'; */ export class PrivateCircuitPublicInputs { constructor( + /** + * The maximum block number in which this transaction can be included and be valid. + */ + public maxBlockNumber: Fr, /** * Context of the call corresponding to this private circuit execution. */ @@ -147,6 +151,7 @@ export class PrivateCircuitPublicInputs { static fromBuffer(buffer: Buffer | BufferReader): PrivateCircuitPublicInputs { const reader = BufferReader.asReader(buffer); return new PrivateCircuitPublicInputs( + reader.readObject(Fr), reader.readObject(CallContext), reader.readObject(Fr), reader.readArray(RETURN_VALUES_LENGTH, Fr), @@ -174,6 +179,7 @@ export class PrivateCircuitPublicInputs { static fromFields(fields: Fr[] | FieldReader): PrivateCircuitPublicInputs { const reader = FieldReader.asReader(fields); return new PrivateCircuitPublicInputs( + reader.readField(), reader.readObject(CallContext), reader.readField(), reader.readFieldArray(RETURN_VALUES_LENGTH), @@ -204,6 +210,7 @@ export class PrivateCircuitPublicInputs { */ public static empty(): PrivateCircuitPublicInputs { return new PrivateCircuitPublicInputs( + new Fr(0), CallContext.empty(), Fr.ZERO, makeTuple(RETURN_VALUES_LENGTH, Fr.zero), @@ -234,26 +241,27 @@ export class PrivateCircuitPublicInputs { // eslint-disable-next-line jsdoc/require-jsdoc const isZeroArray = (arr: { isZero: (...args: any[]) => boolean }[]) => isArrayEmpty(arr, item => item.isZero()); return ( + this.maxBlockNumber == new Fr(2n << (32n - 1n)), this.callContext.isEmpty() && - this.argsHash.isZero() && - isZeroArray(this.returnValues) && - this.minRevertibleSideEffectCounter.isZero() && - isEmptyArray(this.noteHashReadRequests) && - isEmptyArray(this.nullifierReadRequests) && - isEmptyArray(this.nullifierKeyValidationRequests) && - isEmptyArray(this.newNoteHashes) && - isEmptyArray(this.newNullifiers) && - isZeroArray(this.privateCallStackHashes) && - isZeroArray(this.publicCallStackHashes) && - isEmptyArray(this.newL2ToL1Msgs) && - isZeroArray(this.encryptedLogsHash) && - isZeroArray(this.unencryptedLogsHash) && - this.encryptedLogPreimagesLength.isZero() && - this.unencryptedLogPreimagesLength.isZero() && - this.historicalHeader.isEmpty() && - this.contractDeploymentData.isEmpty() && - this.chainId.isZero() && - this.version.isZero() + this.argsHash.isZero() && + isZeroArray(this.returnValues) && + this.minRevertibleSideEffectCounter.isZero() && + isEmptyArray(this.noteHashReadRequests) && + isEmptyArray(this.nullifierReadRequests) && + isEmptyArray(this.nullifierKeyValidationRequests) && + isEmptyArray(this.newNoteHashes) && + isEmptyArray(this.newNullifiers) && + isZeroArray(this.privateCallStackHashes) && + isZeroArray(this.publicCallStackHashes) && + isEmptyArray(this.newL2ToL1Msgs) && + isZeroArray(this.encryptedLogsHash) && + isZeroArray(this.unencryptedLogsHash) && + this.encryptedLogPreimagesLength.isZero() && + this.unencryptedLogPreimagesLength.isZero() && + this.historicalHeader.isEmpty() && + this.contractDeploymentData.isEmpty() && + this.chainId.isZero() && + this.version.isZero() ); } @@ -264,6 +272,7 @@ export class PrivateCircuitPublicInputs { */ static getFields(fields: FieldsOf) { return [ + fields.maxBlockNumber, fields.callContext, fields.argsHash, fields.returnValues, diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index d16412fbc6a..934e38792f0 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -346,6 +346,7 @@ export function makeAccumulatedNonRevertibleData(seed = 1, full = false): Privat const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new PrivateAccumulatedNonRevertibleData( + new Fr(seed + 0x31415), // max block number tupleGenerator(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, sideEffectFromNumber, seed + 0x101), tupleGenerator(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x201), tupleGenerator(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x501), @@ -847,6 +848,7 @@ export function makePrivateCallStackItem(seed = 1): PrivateCallStackItem { */ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicInputs { return PrivateCircuitPublicInputs.from({ + maxBlockNumber: new Fr(seed + 0x31415), callContext: new CallContext( makeAztecAddress(seed + 1), makeAztecAddress(seed + 2), From 0dc6dcaf04a8093a28c7b4a210d66fee116a3535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 13 Mar 2024 16:42:13 +0000 Subject: [PATCH 09/36] Update TS definitions --- .../structs/kernel/combined_accumulated_data.ts | 17 ++++++++++++++++- .../structs/private_circuit_public_inputs.ts | 2 +- yarn-project/circuits.js/src/tests/factories.ts | 2 ++ .../src/type_conversion.ts | 7 +++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index a3800716674..8e5a0038c83 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -159,6 +159,10 @@ export class PublicDataUpdateRequest { */ export class CombinedAccumulatedData { constructor( + /** + * The maximum block number in which this transaction can be included and be valid. + */ + public maxBlockNumber: Fr, /** * All the read requests made in this transaction. */ @@ -228,6 +232,7 @@ export class CombinedAccumulatedData { toBuffer() { return serializeToBuffer( + this.maxBlockNumber, this.noteHashReadRequests, this.nullifierReadRequests, this.nullifierKeyValidationRequests, @@ -258,6 +263,7 @@ export class CombinedAccumulatedData { static fromBuffer(buffer: Buffer | BufferReader): CombinedAccumulatedData { const reader = BufferReader.asReader(buffer); return new CombinedAccumulatedData( + Fr.fromBuffer(reader), reader.readArray(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, SideEffect), reader.readArray(MAX_NULLIFIER_READ_REQUESTS_PER_TX, ReadRequestContext), reader.readArray(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, NullifierKeyValidationRequestContext), @@ -287,6 +293,7 @@ export class CombinedAccumulatedData { static empty() { return new CombinedAccumulatedData( + Fr.zero(), makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, SideEffect.empty), makeTuple(MAX_NULLIFIER_READ_REQUESTS_PER_TX, ReadRequestContext.empty), makeTuple(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, NullifierKeyValidationRequestContext.empty), @@ -360,6 +367,7 @@ export class CombinedAccumulatedData { ); return new CombinedAccumulatedData( + nonRevertible.maxBlockNumber, revertible.noteHashReadRequests, revertible.nullifierReadRequests, revertible.nullifierKeyValidationRequests, @@ -710,7 +718,7 @@ export class PrivateAccumulatedNonRevertibleData { static empty() { return new PrivateAccumulatedNonRevertibleData( - new Fr(0), + Fr.ZERO, makeTuple(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect.empty), makeTuple(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), @@ -720,6 +728,10 @@ export class PrivateAccumulatedNonRevertibleData { export class PublicAccumulatedNonRevertibleData { constructor( + /** + * The maximum block number in which this transaction can be included and be valid. + */ + public maxBlockNumber: Fr, /** * The new non-revertible commitments made in this transaction. */ @@ -752,6 +764,7 @@ export class PublicAccumulatedNonRevertibleData { static fromBuffer(buffer: Buffer | BufferReader) { const reader = BufferReader.asReader(buffer); return new this( + Fr.fromBuffer(reader), reader.readArray(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect), reader.readArray(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), reader.readArray(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), @@ -770,6 +783,7 @@ export class PublicAccumulatedNonRevertibleData { static empty() { return new this( + Fr.ZERO, makeTuple(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect.empty), makeTuple(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), @@ -780,6 +794,7 @@ export class PublicAccumulatedNonRevertibleData { static fromPrivateAccumulatedNonRevertibleData(data: PrivateAccumulatedNonRevertibleData) { return new this( + data.maxBlockNumber, data.newNoteHashes, data.newNullifiers, data.publicCallStack, diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index 0a9efb6fa8e..cc542500bfa 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -210,7 +210,7 @@ export class PrivateCircuitPublicInputs { */ public static empty(): PrivateCircuitPublicInputs { return new PrivateCircuitPublicInputs( - new Fr(0), + Fr.ZERO, CallContext.empty(), Fr.ZERO, makeTuple(RETURN_VALUES_LENGTH, Fr.zero), diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 934e38792f0..9748d8b1cb3 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -262,6 +262,7 @@ export function makeCombinedAccumulatedData(seed = 1, full = false): CombinedAcc const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new CombinedAccumulatedData( + new Fr(seed + 0x31415), // max block number tupleGenerator(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, sideEffectFromNumber, seed + 0x80), tupleGenerator(MAX_NULLIFIER_READ_REQUESTS_PER_TX, readRequestContextFromNumber, seed + 0x90), tupleGenerator( @@ -357,6 +358,7 @@ export function makeCombinedAccumulatedNonRevertibleData(seed = 1, full = false) const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new PublicAccumulatedNonRevertibleData( + new Fr(seed + 0x31415), // max block number tupleGenerator(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, sideEffectFromNumber, seed + 0x101), tupleGenerator(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x201), tupleGenerator(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x501), diff --git a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts index f50b9b83b0e..2aefef755f7 100644 --- a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts @@ -719,6 +719,7 @@ export function mapPrivateCircuitPublicInputsToNoir( privateCircuitPublicInputs: PrivateCircuitPublicInputs, ): PrivateCircuitPublicInputsNoir { return { + max_block_number: mapFieldToNoir(privateCircuitPublicInputs.maxBlockNumber), call_context: mapCallContextToNoir(privateCircuitPublicInputs.callContext), args_hash: mapFieldToNoir(privateCircuitPublicInputs.argsHash), return_values: mapTuple(privateCircuitPublicInputs.returnValues, mapFieldToNoir), @@ -972,6 +973,7 @@ export function mapCombinedAccumulatedDataFromNoir( combinedAccumulatedData: CombinedAccumulatedDataNoir, ): CombinedAccumulatedData { return new CombinedAccumulatedData( + mapFieldFromNoir(combinedAccumulatedData.max_block_number), mapTupleFromNoir( combinedAccumulatedData.note_hash_read_requests, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, @@ -1061,6 +1063,7 @@ export function mapAccumulatedNonRevertibleDataFromNoir( accumulatedMetaData: PrivateAccumulatedNonRevertibleDataNoir, ): PrivateAccumulatedNonRevertibleData { return new PrivateAccumulatedNonRevertibleData( + mapFieldFromNoir(accumulatedMetaData.max_block_number), mapTupleFromNoir(accumulatedMetaData.new_note_hashes, MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir( accumulatedMetaData.new_nullifiers, @@ -1084,6 +1087,7 @@ export function mapAccumulatedNonRevertibleDataToNoir( accumulatedMetaData: PrivateAccumulatedNonRevertibleData, ): PrivateAccumulatedNonRevertibleDataNoir { return { + max_block_number: mapFieldToNoir(accumulatedMetaData.maxBlockNumber), new_note_hashes: mapTuple(accumulatedMetaData.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(accumulatedMetaData.newNullifiers, mapSideEffectLinkedToNoir), public_call_stack: mapTuple(accumulatedMetaData.publicCallStack, mapCallRequestToNoir), @@ -1116,6 +1120,7 @@ export function mapCombinedAccumulatedDataToNoir( combinedAccumulatedData: CombinedAccumulatedData, ): CombinedAccumulatedDataNoir { return { + max_block_number: mapFieldToNoir(combinedAccumulatedData.maxBlockNumber), note_hash_read_requests: mapTuple(combinedAccumulatedData.noteHashReadRequests, mapSideEffectToNoir), nullifier_read_requests: mapTuple(combinedAccumulatedData.nullifierReadRequests, mapReadRequestContextToNoir), nullifier_key_validation_requests: mapTuple( @@ -1231,6 +1236,7 @@ export function mapPublicAccumulatedNonRevertibleDataToNoir( data: PublicAccumulatedNonRevertibleData, ): PublicAccumulatedNonRevertibleDataNoir { return { + max_block_number: mapFieldToNoir(data.maxBlockNumber), new_note_hashes: mapTuple(data.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(data.newNullifiers, mapSideEffectLinkedToNoir), public_call_stack: mapTuple(data.publicCallStack, mapCallRequestToNoir), @@ -1417,6 +1423,7 @@ export function mapPublicAccumulatedNonRevertibleDataFromNoir( data: PublicAccumulatedNonRevertibleDataNoir, ): PublicAccumulatedNonRevertibleData { return new PublicAccumulatedNonRevertibleData( + mapFieldFromNoir(data.max_block_number), mapTupleFromNoir(data.new_note_hashes, MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(data.new_nullifiers, MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), mapTupleFromNoir( From dd2b40d424b83d2dc01dee8820cb4f0afe754e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 14 Mar 2024 17:39:07 +0000 Subject: [PATCH 10/36] Migrate max_block_number to use option --- .../aztec/src/context/private_context.nr | 9 +- .../crates/private-kernel-lib/src/common.nr | 6 +- .../src/private_kernel_init.nr | 6 +- .../src/private_kernel_inner.nr | 12 +- .../src/private_kernel_tail.nr | 6 +- .../src/public_kernel_setup.nr | 6 +- .../rollup-lib/src/base/base_rollup_inputs.nr | 10 +- .../crates/types/src/abis.nr | 2 + ...accumulated_non_revertible_data_builder.nr | 4 +- .../combined_accumulated_data.nr | 3 +- .../combined_accumulated_data_builder.nr | 4 +- ...private_accumulated_non_revertible_data.nr | 9 +- .../public_accumulated_non_revertible_data.nr | 4 +- .../crates/types/src/abis/max_block_number.nr | 134 ++++++++++++++++++ .../src/abis/private_circuit_public_inputs.nr | 11 +- .../crates/types/src/constants.nr | 5 +- .../types/src/tests/kernel_data_builder.nr | 15 +- .../src/tests/private_call_data_builder.nr | 4 +- .../private_circuit_public_inputs_builder.nr | 6 +- 19 files changed, 197 insertions(+), 59 deletions(-) create mode 100644 noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr diff --git a/noir-projects/aztec-nr/aztec/src/context/private_context.nr b/noir-projects/aztec-nr/aztec/src/context/private_context.nr index 5fc293a70b2..59f1d166a2a 100644 --- a/noir-projects/aztec-nr/aztec/src/context/private_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/private_context.nr @@ -11,6 +11,7 @@ use crate::{ use dep::protocol_types::{ abis::{ call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector, + max_block_number::MaxBlockNumber, nullifier_key_validation_request::NullifierKeyValidationRequest, private_call_stack_item::PrivateCallStackItem, private_circuit_public_inputs::PrivateCircuitPublicInputs, @@ -45,7 +46,7 @@ struct PrivateContext { args_hash : Field, return_values : BoundedVec, - max_block_number: u32, + max_block_number: MaxBlockNumber, note_hash_read_requests: BoundedVec, nullifier_read_requests: BoundedVec, @@ -126,7 +127,7 @@ impl PrivateContext { min_revertible_side_effect_counter, args_hash, return_values: BoundedVec::new(), - max_block_number: 4294967295, // TODO: replace with u32::MAX once it's implemented + max_block_number: MaxBlockNumber::default(), note_hash_read_requests: BoundedVec::new(), nullifier_read_requests: BoundedVec::new(), nullifier_key_validation_requests: BoundedVec::new(), @@ -198,9 +199,7 @@ impl PrivateContext { } pub fn request_max_block_number(&mut self, max_block_number: u32) { - if max_block_number < self.max_block_number { - self.max_block_number = max_block_number; - } + self.max_block_number = MaxBlockNumber::lower_unwrapped(self.max_block_number, max_block_number); } pub fn push_note_hash_read_request(&mut self, note_hash: Field) { diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr index 92cd284b484..5ea648533e1 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr @@ -3,8 +3,8 @@ use dep::types::{ abis::{ call_request::CallRequest, accumulated_data::CombinedAccumulatedData, function_data::FunctionData, kernel_circuit_public_inputs::PrivateKernelCircuitPublicInputsBuilder, - membership_witness::NoteHashReadRequestMembershipWitness, new_contract_data::NewContractData, - private_circuit_public_inputs::PrivateCircuitPublicInputs, + max_block_number::MaxBlockNumber, membership_witness::NoteHashReadRequestMembershipWitness, + new_contract_data::NewContractData, private_circuit_public_inputs::PrivateCircuitPublicInputs, private_kernel::private_call_data::PrivateCallData, kernel_data::{PrivateKernelInnerData, PrivateKernelTailData}, side_effect::{SideEffect, SideEffectLinkedToNoteHash} @@ -181,7 +181,7 @@ pub fn update_end_values( let storage_contract_address = private_call_public_inputs.call_context.storage_contract_address; // Update the max block number if the private call requested a lower one. - public_inputs.end.max_block_number = min(public_inputs.end.max_block_number, private_call_public_inputs.max_block_number); + public_inputs.end.max_block_number = MaxBlockNumber::lower(public_inputs.end.max_block_number, private_call_public_inputs.max_block_number); // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr index e9b2507bb6b..2758d2124dd 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_init.nr @@ -19,8 +19,6 @@ struct PrivateKernelInitCircuitPrivateInputs { impl PrivateKernelInitCircuitPrivateInputs { fn initialize_end_values(self, public_inputs: &mut PrivateKernelCircuitPublicInputsBuilder) { - public_inputs.end.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented - public_inputs.constants = CombinedConstantData { historical_header: self.private_call.call_stack_item.public_inputs.historical_header, tx_context: self.tx_request.tx_context, @@ -509,7 +507,7 @@ mod tests { let mut builder = PrivateKernelInitInputsBuilder::new_constructor(); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.max_block_number, 4294967295); + assert(public_inputs.end.max_block_number.is_none()); } #[test] @@ -518,7 +516,7 @@ mod tests { builder.private_call.request_max_block_number(42); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.max_block_number, 42); + assert_eq(public_inputs.end.max_block_number.unwrap(), 42); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr index 7b2d1900361..015c6cbe2e4 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_inner.nr @@ -90,7 +90,7 @@ mod tests { use dep::types::{ abis::{ kernel_circuit_public_inputs::PrivateKernelInnerCircuitPublicInputs, - side_effect::{SideEffect, SideEffectLinkedToNoteHash} + max_block_number::MaxBlockNumber, side_effect::{SideEffect, SideEffectLinkedToNoteHash} }, address::{AztecAddress, EthAddress}, hash::compute_logs_hash, messaging::l2_to_l1_message::L2ToL1Message, utils::{arrays::array_length}, @@ -607,10 +607,10 @@ mod tests { #[test] fn propagate_previous_kernel_max_block_number() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.previous_kernel.end.max_block_number = 13; + builder.previous_kernel.end.max_block_number = MaxBlockNumber::new(13); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.max_block_number, 13); + assert_eq(public_inputs.end.max_block_number.unwrap(), 13); } #[test] @@ -619,19 +619,19 @@ mod tests { builder.private_call.request_max_block_number(42); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.max_block_number, 42); + assert_eq(public_inputs.end.max_block_number.unwrap(), 42); } #[test] fn ignore_larger_max_block_number() { let mut builder = PrivateKernelInnerInputsBuilder::new(); - builder.previous_kernel.end.max_block_number = 13; + builder.previous_kernel.end.max_block_number = MaxBlockNumber::new(13); // A private call requesting a larger max_block_number should not change the current one as that constraint is // already satisfied. builder.private_call.request_max_block_number(42); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.max_block_number, 13); + assert_eq(public_inputs.end.max_block_number.unwrap(), 13); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr index 92f44def250..f5bfdf8a111 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr @@ -273,7 +273,7 @@ mod tests { use dep::types::{ abis::{ kernel_circuit_public_inputs::PrivateKernelTailCircuitPublicInputs, - side_effect::{SideEffect, SideEffectLinkedToNoteHash, Ordered} + max_block_number::MaxBlockNumber, side_effect::{SideEffect, SideEffectLinkedToNoteHash, Ordered} }, hash::compute_unique_siloed_note_hashes, tests::kernel_data_builder::PreviousKernelDataBuilder, utils::{arrays::{array_eq, array_length}}, traits::{Empty, is_empty, is_empty_array} @@ -462,10 +462,10 @@ mod tests { #[test] fn propagate_previous_kernel_max_block_number() { let mut builder = PrivateKernelTailInputsBuilder::new(); - builder.previous_kernel.end.max_block_number = 13; + builder.previous_kernel.end.max_block_number = MaxBlockNumber::new(13); let public_inputs = builder.execute(); - assert_eq(public_inputs.end_non_revertible.max_block_number, 13); + assert_eq(public_inputs.end_non_revertible.max_block_number.unwrap(), 13); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr index 363a77f42ff..60ec355bb25 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr @@ -77,7 +77,7 @@ mod tests { use dep::types::{ abis::{ call_request::CallRequest, function_selector::FunctionSelector, - kernel_circuit_public_inputs::PublicKernelCircuitPublicInputs, + kernel_circuit_public_inputs::PublicKernelCircuitPublicInputs, max_block_number::MaxBlockNumber, new_contract_data::NewContractData, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, public_call_data::PublicCallData }, @@ -377,7 +377,7 @@ mod tests { fn circuit_outputs_should_be_correctly_populated_with_previous_private_kernel() { let mut builder = PublicKernelSetupCircuitPrivateInputsBuilder::new(); - builder.previous_kernel.end_non_revertible.max_block_number = 13; + builder.previous_kernel.end_non_revertible.max_block_number = MaxBlockNumber::new(13); let new_contracts = [ NewContractData { @@ -415,7 +415,7 @@ mod tests { let public_inputs = kernel.public_kernel_setup(); - assert_eq(public_inputs.end_non_revertible.max_block_number, 13); + assert_eq(public_inputs.end_non_revertible.max_block_number.unwrap(), 13); assert_eq_new_contracts(public_inputs.end.new_contracts, new_contracts); assert_eq_call_requests(public_inputs.end.private_call_stack, []); assert_eq_call_requests( diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr index 096561abea8..540292c9690 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -74,10 +74,12 @@ impl BaseRollupInputs { // Verify the max block number // TODO: why is block_number a Field and not u32? - assert( - self.constants.global_variables.block_number as u32 - <= self.kernel_data.public_inputs.end.max_block_number, "kernel max_block_number is smaller than block number" - ); + if self.kernel_data.public_inputs.end.max_block_number.is_some() { + assert( + self.constants.global_variables.block_number as u32 + <= self.kernel_data.public_inputs.end.max_block_number.unwrap_unchecked(), "kernel max_block_number is smaller than block number" + ); + } // First we compute the contract tree leaves let contract_leaves = self.calculate_contract_leaves(); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis.nr index 7736b8940f9..f39158f5ef3 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis.nr @@ -24,6 +24,8 @@ mod public_data_update_request; mod accumulated_data; +mod max_block_number; + mod private_kernel; mod kernel_circuit_public_inputs; mod kernel_data; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr index 454af422a7a..36ab9d7645e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/accumulated_non_revertible_data_builder.nr @@ -4,7 +4,7 @@ use crate::{ private_accumulated_non_revertible_data::PrivateAccumulatedNonRevertibleData, public_accumulated_non_revertible_data::PublicAccumulatedNonRevertibleData }, - call_request::CallRequest, public_data_read::PublicDataRead, + call_request::CallRequest, public_data_read::PublicDataRead, max_block_number::MaxBlockNumber, public_data_update_request::PublicDataUpdateRequest, side_effect::{SideEffect, SideEffectLinkedToNoteHash} } @@ -16,7 +16,7 @@ use crate::constants::{ }; struct AccumulatedNonRevertibleDataBuilder { - max_block_number: u32, + max_block_number: MaxBlockNumber, new_note_hashes: BoundedVec, new_nullifiers: BoundedVec, public_call_stack: BoundedVec, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr index 238272f950b..15a71648c40 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data.nr @@ -5,6 +5,7 @@ use crate::{ public_accumulated_revertible_data::PublicAccumulatedRevertibleData }, call_request::CallRequest, caller_context::CallerContext, new_contract_data::NewContractData, + max_block_number::MaxBlockNumber, nullifier_key_validation_request::NullifierKeyValidationRequestContext, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, read_request::ReadRequestContext, side_effect::{SideEffect, SideEffectLinkedToNoteHash} @@ -29,7 +30,7 @@ use crate::traits::is_empty; use crate::utils::arrays::{array_cp, array_concat, array_to_bounded_vec}; struct CombinedAccumulatedData { - max_block_number: u32, + max_block_number: MaxBlockNumber, note_hash_read_requests: [SideEffect; MAX_NOTE_HASH_READ_REQUESTS_PER_TX], nullifier_read_requests: [ReadRequestContext; MAX_NULLIFIER_READ_REQUESTS_PER_TX], diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr index 229efd2731a..98270890724 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/combined_accumulated_data_builder.nr @@ -9,7 +9,7 @@ use crate::{ public_accumulated_revertible_data::PublicAccumulatedRevertibleData, public_accumulated_non_revertible_data::PublicAccumulatedNonRevertibleData }, - call_request::CallRequest, new_contract_data::NewContractData, + call_request::CallRequest, new_contract_data::NewContractData, max_block_number::MaxBlockNumber, nullifier_key_validation_request::NullifierKeyValidationRequestContext, public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, read_request::ReadRequestContext, side_effect::{SideEffect, SideEffectLinkedToNoteHash} @@ -34,7 +34,7 @@ use crate::traits::is_empty; use crate::utils::arrays::{array_cp, array_concat, array_to_bounded_vec}; struct CombinedAccumulatedDataBuilder { - max_block_number: u32, + max_block_number: MaxBlockNumber, note_hash_read_requests: BoundedVec, nullifier_read_requests: BoundedVec, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr index 72aba3b6f5f..2d2db9d1cef 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_non_revertible_data.nr @@ -1,11 +1,16 @@ -use crate::{abis::{call_request::CallRequest, side_effect::{SideEffect, SideEffectLinkedToNoteHash}}}; +use crate::{ + abis::{ + call_request::CallRequest, max_block_number::MaxBlockNumber, + side_effect::{SideEffect, SideEffectLinkedToNoteHash} +} +}; use crate::constants::{ MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX }; struct PrivateAccumulatedNonRevertibleData { - max_block_number: u32, + max_block_number: MaxBlockNumber, new_note_hashes: [SideEffect; MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX], public_call_stack: [CallRequest; MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX], diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr index 1d5aa1f6beb..4729b82184f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/public_accumulated_non_revertible_data.nr @@ -1,6 +1,6 @@ use crate::{ abis::{ - call_request::CallRequest, public_data_read::PublicDataRead, + call_request::CallRequest, public_data_read::PublicDataRead, max_block_number::MaxBlockNumber, public_data_update_request::PublicDataUpdateRequest, side_effect::{SideEffect, SideEffectLinkedToNoteHash} } @@ -17,7 +17,7 @@ use crate::traits::is_empty; use crate::utils::arrays::{array_cp, array_concat, array_to_bounded_vec}; struct PublicAccumulatedNonRevertibleData { - max_block_number: u32, + max_block_number: MaxBlockNumber, new_note_hashes: [SideEffect; MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX], new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX], public_call_stack: [CallRequest; MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX], diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr new file mode 100644 index 00000000000..ca1f8e8d1ba --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr @@ -0,0 +1,134 @@ +use crate::{constants::{MAX_BLOCK_NUMBER_LENGTH}, traits::{Deserialize, Serialize}}; + +struct MaxBlockNumber { + _opt: Option +} + +impl Default for MaxBlockNumber { + fn default() -> Self { + Self { _opt: Option::none() } + } +} + +impl Eq for MaxBlockNumber { + fn eq(self, other: Self) -> bool { + // Option does not impl Eq, so we do this manually for now + if self._opt.is_none() & other._opt.is_none() { + true + } else if self._opt.is_some() & other._opt.is_some() { + self._opt.unwrap_unchecked() == other._opt.unwrap_unchecked() + } else { + false + } + } +} + +impl Serialize for MaxBlockNumber { + fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] { + [self._opt._is_some as Field, self._opt._value as Field] + } +} + +impl Deserialize for MaxBlockNumber { + fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber { + MaxBlockNumber { + _opt: Option { + _is_some: serialized[0] as bool, + _value: serialized[1] as u32, + } + } + } +} + +impl MaxBlockNumber { + pub fn new(max_block_number: u32) -> Self { + Self { _opt: Option::some(max_block_number) } + } + + pub fn is_none(self) -> bool { + self._opt.is_none() + } + + pub fn is_some(self) -> bool { + self._opt.is_some() + } + + pub fn unwrap(self) -> u32 { + self._opt.unwrap() + } + + pub fn unwrap_unchecked(self) -> u32 { + self._opt.unwrap_unchecked() + } + + pub fn lower(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber { + if lhs._opt.is_none() { + rhs + } else if rhs._opt.is_none() { + lhs + } else { + let lhs_value = lhs._opt.unwrap_unchecked(); + let rhs_value = rhs._opt.unwrap_unchecked(); + + MaxBlockNumber::new( + if lhs_value < rhs_value { + lhs_value + } else { + rhs_value + } + ) + } + } + + pub fn lower_unwrapped(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber { + if lhs._opt.is_none() { + MaxBlockNumber::new(rhs) + } else { + let lhs_value = lhs._opt.unwrap_unchecked(); + + MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs }) + } + } +} + +#[test] +fn max_block_number_zeroed_is_none() { + let a: MaxBlockNumber = dep::std::unsafe::zeroed(); + assert(a.is_none()); +} + +#[test] +fn max_block_number_eq_none_none() { + let a = MaxBlockNumber::default(); + let b = MaxBlockNumber::default(); + assert(a.eq(b)); +} + +#[test] +fn max_block_number_eq_none_some() { + let a = MaxBlockNumber::default(); + let b = MaxBlockNumber::new(42); + assert(!a.eq(b)); +} + +#[test] +fn max_block_number_eq_some_nome() { + let a = MaxBlockNumber::new(42); + let b = MaxBlockNumber::default(); + assert(!a.eq(b)); +} + +#[test] +fn max_block_number_eq_some_some_neq() { + let a = MaxBlockNumber::new(42); + let b = MaxBlockNumber::new(13); + assert(!a.eq(b)); +} + +#[test] +fn max_block_number_eq_some_some_eq() { + let a = MaxBlockNumber::new(42); + let b = MaxBlockNumber::new(42); + assert(a.eq(b)); +} + diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr index bb5934ec400..80b81b39c07 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr @@ -1,7 +1,8 @@ use crate::{ abis::{ - call_context::CallContext, nullifier_key_validation_request::NullifierKeyValidationRequest, - read_request::ReadRequest, side_effect::{SideEffect, SideEffectLinkedToNoteHash} + call_context::CallContext, max_block_number::MaxBlockNumber, + nullifier_key_validation_request::NullifierKeyValidationRequest, read_request::ReadRequest, + side_effect::{SideEffect, SideEffectLinkedToNoteHash} }, constants::{ MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, @@ -24,7 +25,7 @@ struct PrivateCircuitPublicInputs { min_revertible_side_effect_counter: u32, - max_block_number: u32, + max_block_number: MaxBlockNumber, note_hash_read_requests: [SideEffect; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL], @@ -92,7 +93,7 @@ impl Serialize for PrivateCircuitPublicInp fields.push(self.min_revertible_side_effect_counter as Field); - fields.push(self.max_block_number as Field); + fields.extend_from_array(self.max_block_number.serialize()); for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL{ fields.extend_from_array(self.note_hash_read_requests[i].serialize()); @@ -139,7 +140,7 @@ impl Deserialize for PrivateCircuitPublicI args_hash: reader.read(), return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), min_revertible_side_effect_counter: reader.read() as u32, - max_block_number: reader.read() as u32, + max_block_number: reader.read_struct(MaxBlockNumber::deserialize), note_hash_read_requests: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]), nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]), nullifier_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL]), diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index cb18de35575..64aebe9e811 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -158,15 +158,16 @@ global GLOBAL_VARIABLES_LENGTH: u64 = 6; global HEADER_LENGTH: u64 = 25; // 2 for last_archive, 7 for content commitment, 10 for state reference, 6 for global vars global L1_TO_L2_MESSAGE_LENGTH: u64 = 8; global L2_TO_L1_MESSAGE_LENGTH: u64 = 2; +global MAX_BLOCK_NUMBER_LENGTH: u64 = 2; // 1 for the option flag, 1 for the value global NEW_CONTRACT_DATA_LENGTH: u64 = 3; global NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH = 4; global NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH = 5; global PARTIAL_STATE_REFERENCE_LENGTH: u64 = 8; -global PRIVATE_CALL_STACK_ITEM_LENGTH: u64 = 224; +global PRIVATE_CALL_STACK_ITEM_LENGTH: u64 = 225; // Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. // In other words, if the structure/size of the public inputs of a function call changes then we should change this // constant as well PRIVATE_CALL_STACK_ITEM_LENGTH -global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u64 = 219; +global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u64 = 220; // Change this ONLY if you have changed the PublicCircuitPublicInputs structure. global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: u64 = 194; global STATE_REFERENCE_LENGTH: u64 = 10; // 2 for snap + 8 for partial diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr index 237643426f7..009bb541da4 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/kernel_data_builder.nr @@ -8,8 +8,9 @@ use crate::{ PublicKernelCircuitPublicInputs, RollupKernelCircuitPublicInputs }, kernel_data::{PrivateKernelInnerData, PrivateKernelTailData, PublicKernelData, RollupKernelData}, - public_data_read::PublicDataRead, public_data_update_request::PublicDataUpdateRequest, - read_request::ReadRequestContext, side_effect::{SideEffect, SideEffectLinkedToNoteHash} + max_block_number::MaxBlockNumber, public_data_read::PublicDataRead, + public_data_update_request::PublicDataUpdateRequest, read_request::ReadRequestContext, + side_effect::{SideEffect, SideEffectLinkedToNoteHash} }, address::{AztecAddress, EthAddress}, header::Header, hash::silo_nullifier, mocked::{AggregationObject, Proof, VerificationKey}, @@ -53,12 +54,6 @@ impl PreviousKernelDataBuilder { end.new_nullifiers.push(tx_nullifier); } - // TODO: the builder makes a distinction between building a kernel for public and for private, but - // max_block_number lives in end_non_revertible for public, and end for private and rollup. We therefore store - // it in both places. - end_non_revertible.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented - end.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented - let tx_context = build_tx_context(false, 0); PreviousKernelDataBuilder { @@ -88,8 +83,8 @@ impl PreviousKernelDataBuilder { // TODO: the builder makes a distinction between building a kernel for public and for private, but // max_block_number lives in end_non_revertible for public, and end for private and rollup. We therefore store // it in both places. - self.end_non_revertible.max_block_number = max_block_number; // TODO: replace with u32::MAX once it's implemented - self.end.max_block_number = max_block_number; // TODO: replace with u32::MAX once it's implemented + self.end_non_revertible.max_block_number = MaxBlockNumber::new(max_block_number); + self.end.max_block_number = MaxBlockNumber::new(max_block_number); } pub fn append_public_data_update_requests(&mut self, num_updates: u64) { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr index 8db94c5099d..729ce77d34f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_call_data_builder.nr @@ -1,7 +1,7 @@ use crate::{ abis::{ call_request::{CallerContext, CallRequest}, private_call_stack_item::PrivateCallStackItem, - function_data::FunctionData, + function_data::FunctionData, max_block_number::MaxBlockNumber, membership_witness::{ContractLeafMembershipWitness, FunctionLeafMembershipWitness, NoteHashReadRequestMembershipWitness}, private_circuit_public_inputs::{PrivateCircuitPublicInputs}, private_kernel::private_call_data::PrivateCallData @@ -157,7 +157,7 @@ impl PrivateCallDataBuilder { } pub fn request_max_block_number(&mut self, max_block_number: u32) { - self.public_inputs.max_block_number = max_block_number; + self.public_inputs.max_block_number = MaxBlockNumber::new(max_block_number); } pub fn append_note_hash_read_requests(&mut self, num_read_requests: u64) { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr index 2e1e6490e4d..e9b8f0a8d4e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/private_circuit_public_inputs_builder.nr @@ -1,6 +1,7 @@ use crate::{ abis::{ - call_context::CallContext, nullifier_key_validation_request::NullifierKeyValidationRequest, + call_context::CallContext, max_block_number::MaxBlockNumber, + nullifier_key_validation_request::NullifierKeyValidationRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs, read_request::ReadRequest, side_effect::{SideEffect, SideEffectLinkedToNoteHash} }, @@ -26,7 +27,7 @@ struct PrivateCircuitPublicInputsBuilder { min_revertible_side_effect_counter: u32, - max_block_number: u32, + max_block_number: MaxBlockNumber, note_hash_read_requests: BoundedVec, nullifier_read_requests: BoundedVec, @@ -97,7 +98,6 @@ impl PrivateCircuitPublicInputsBuilder { }; public_inputs.call_context = call_context; public_inputs.args_hash = args_hash; - public_inputs.max_block_number = 4294967295; // TODO: replace with u32::MAX once it's implemented public_inputs.contract_deployment_data = contract_deployment_data; public_inputs.historical_header = fixtures::HEADER; public_inputs.chain_id = 0; From c104e8c4b9144a8a47ef27325fbdd3f61448dd18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 14 Mar 2024 18:27:32 +0000 Subject: [PATCH 11/36] Add more unit tests --- .../aztec/src/context/private_context.nr | 2 +- .../crates/private-kernel-lib/src/common.nr | 2 +- .../crates/types/src/abis/max_block_number.nr | 88 ++++++++++++++----- 3 files changed, 68 insertions(+), 24 deletions(-) diff --git a/noir-projects/aztec-nr/aztec/src/context/private_context.nr b/noir-projects/aztec-nr/aztec/src/context/private_context.nr index 59f1d166a2a..bff947e1643 100644 --- a/noir-projects/aztec-nr/aztec/src/context/private_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/private_context.nr @@ -199,7 +199,7 @@ impl PrivateContext { } pub fn request_max_block_number(&mut self, max_block_number: u32) { - self.max_block_number = MaxBlockNumber::lower_unwrapped(self.max_block_number, max_block_number); + self.max_block_number = MaxBlockNumber::get_lower_with_u32(self.max_block_number, max_block_number); } pub fn push_note_hash_read_request(&mut self, note_hash: Field) { diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr index 5ea648533e1..2246316bbbe 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr @@ -181,7 +181,7 @@ pub fn update_end_values( let storage_contract_address = private_call_public_inputs.call_context.storage_contract_address; // Update the max block number if the private call requested a lower one. - public_inputs.end.max_block_number = MaxBlockNumber::lower(public_inputs.end.max_block_number, private_call_public_inputs.max_block_number); + public_inputs.end.max_block_number = MaxBlockNumber::get_lower(public_inputs.end.max_block_number, private_call_public_inputs.max_block_number); // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr index ca1f8e8d1ba..e760742ee13 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr @@ -13,6 +13,7 @@ impl Default for MaxBlockNumber { impl Eq for MaxBlockNumber { fn eq(self, other: Self) -> bool { // Option does not impl Eq, so we do this manually for now + // TODO: replace with self._opt == other._opt once https://github.com/noir-lang/noir/pull/4549 is merged if self._opt.is_none() & other._opt.is_none() { true } else if self._opt.is_some() & other._opt.is_some() { @@ -61,26 +62,15 @@ impl MaxBlockNumber { self._opt.unwrap_unchecked() } - pub fn lower(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber { - if lhs._opt.is_none() { - rhs - } else if rhs._opt.is_none() { - lhs + pub fn get_lower(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber { + if rhs.is_none() { + lhs // lhs might also be none, but in that case both would be } else { - let lhs_value = lhs._opt.unwrap_unchecked(); - let rhs_value = rhs._opt.unwrap_unchecked(); - - MaxBlockNumber::new( - if lhs_value < rhs_value { - lhs_value - } else { - rhs_value - } - ) + MaxBlockNumber::get_lower_with_u32(lhs, rhs.unwrap_unchecked()) } } - pub fn lower_unwrapped(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber { + pub fn get_lower_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber { if lhs._opt.is_none() { MaxBlockNumber::new(rhs) } else { @@ -92,41 +82,95 @@ impl MaxBlockNumber { } #[test] -fn max_block_number_zeroed_is_none() { +fn zeroed_is_none() { + // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does, + // and though we should eventually move everything to use `default`, it's good to check for now that both are + // equivalent. let a: MaxBlockNumber = dep::std::unsafe::zeroed(); assert(a.is_none()); } +#[test(should_fail)] +fn default_unwrap_panics() { + let a = MaxBlockNumber::default(); + let _ = a.unwrap(); +} + +#[test] +fn get_lower_default_default() { + let a = MaxBlockNumber::default(); + let b = MaxBlockNumber::default(); + + assert(MaxBlockNumber::get_lower(a, b).is_none()); +} + +#[test] +fn get_lower_default_some() { + let a = MaxBlockNumber::default(); + let b = MaxBlockNumber::new(13); + + assert_eq(MaxBlockNumber::get_lower(a, b).unwrap(), 13); + assert_eq(MaxBlockNumber::get_lower(b, a).unwrap(), 13); +} + +#[test] +fn get_lower_some_some() { + let a = MaxBlockNumber::new(13); + let b = MaxBlockNumber::new(42); + + assert_eq(MaxBlockNumber::get_lower(a, b).unwrap(), 13); + assert_eq(MaxBlockNumber::get_lower(b, a).unwrap(), 13); +} + +#[test] +fn get_lower_with_u32_default() { + let a = MaxBlockNumber::default(); + let b = 42; + + assert_eq(MaxBlockNumber::get_lower_with_u32(a, b).unwrap(), 42); +} + +#[test] +fn get_lower_with_u32_some() { + let a = MaxBlockNumber::new(13); + let b = 42; + let c = 8; + + assert_eq(MaxBlockNumber::get_lower_with_u32(a, b).unwrap(), 13); + assert_eq(MaxBlockNumber::get_lower_with_u32(a, c).unwrap(), 8); +} + +// TODO: these are Option.Eq tests, remove once https://github.com/noir-lang/noir/pull/4549 is merged #[test] -fn max_block_number_eq_none_none() { +fn eq_none_none() { let a = MaxBlockNumber::default(); let b = MaxBlockNumber::default(); assert(a.eq(b)); } #[test] -fn max_block_number_eq_none_some() { +fn eq_none_some() { let a = MaxBlockNumber::default(); let b = MaxBlockNumber::new(42); assert(!a.eq(b)); } #[test] -fn max_block_number_eq_some_nome() { +fn eq_some_nome() { let a = MaxBlockNumber::new(42); let b = MaxBlockNumber::default(); assert(!a.eq(b)); } #[test] -fn max_block_number_eq_some_some_neq() { +fn eq_some_some_neq() { let a = MaxBlockNumber::new(42); let b = MaxBlockNumber::new(13); assert(!a.eq(b)); } #[test] -fn max_block_number_eq_some_some_eq() { +fn eq_some_some_eq() { let a = MaxBlockNumber::new(42); let b = MaxBlockNumber::new(42); assert(a.eq(b)); From 79df323e86876564025e8daf35cc03e8f45f08c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 14 Mar 2024 20:33:59 +0000 Subject: [PATCH 12/36] Update ts and tests --- .../src/core/libraries/ConstantsGen.sol | 5 +- .../crates/types/src/abis/max_block_number.nr | 14 ++ .../types/src/abis/private_call_stack_item.nr | 2 +- .../src/abis/private_circuit_public_inputs.nr | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 5 +- .../private_call_stack_item.test.ts.snap | 128 +++++++++--------- ...private_circuit_public_inputs.test.ts.snap | 122 ++++++++--------- yarn-project/circuits.js/src/structs/index.ts | 1 + .../kernel/combined_accumulated_data.ts | 19 +-- .../src/structs/max_block_number.ts | 80 +++++++++++ .../structs/private_circuit_public_inputs.ts | 57 ++++---- .../circuits.js/src/tests/factories.ts | 9 +- .../src/type_conversion.ts | 39 +++++- 13 files changed, 304 insertions(+), 179 deletions(-) create mode 100644 yarn-project/circuits.js/src/structs/max_block_number.ts diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index c7728e9646b..cd7d479046a 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -103,12 +103,13 @@ library Constants { uint256 internal constant HEADER_LENGTH = 25; uint256 internal constant L1_TO_L2_MESSAGE_LENGTH = 8; uint256 internal constant L2_TO_L1_MESSAGE_LENGTH = 2; + uint256 internal constant MAX_BLOCK_NUMBER_LENGTH = 2; uint256 internal constant NEW_CONTRACT_DATA_LENGTH = 3; uint256 internal constant NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH = 4; uint256 internal constant NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH = 5; uint256 internal constant PARTIAL_STATE_REFERENCE_LENGTH = 8; - uint256 internal constant PRIVATE_CALL_STACK_ITEM_LENGTH = 224; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 219; + uint256 internal constant PRIVATE_CALL_STACK_ITEM_LENGTH = 225; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 220; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 194; uint256 internal constant STATE_REFERENCE_LENGTH = 10; uint256 internal constant TX_CONTEXT_DATA_LENGTH = 11; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr index e760742ee13..8ced493bc39 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr @@ -90,6 +90,20 @@ fn zeroed_is_none() { assert(a.is_none()); } +#[test] +fn serde_default() { + let a = MaxBlockNumber::default(); + let b = MaxBlockNumber::deserialize(a.serialize()); + assert(b.is_none()); +} + +#[test] +fn serde_some() { + let a = MaxBlockNumber::new(13); + let b = MaxBlockNumber::deserialize(a.serialize()); + assert_eq(b.unwrap(), 13); +} + #[test(should_fail)] fn default_unwrap_panics() { let a = MaxBlockNumber::default(); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr index 78d0fccaf65..1a3ccd355be 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr @@ -75,5 +75,5 @@ fn empty_hash() { let hash = item.hash(); // Value from private_call_stack_item.test.ts "computes empty item hash" test - assert_eq(hash, 0x2dbafe533ce9b51cdec8d0338e4df64059b5f0b0860b26abd1824b658367ff35); + assert_eq(hash, 0x2cfda888afff512b4c0defcdce4c3f2d01541747d29ef877890d9b0d9acfb624); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr index 80b81b39c07..eb209ecd7ac 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr @@ -185,5 +185,5 @@ fn empty_hash() { let hash = inputs.hash(); // Value from private_circuit_public_inputs.test.ts "computes empty item hash" test - assert_eq(hash, 0x125fa609ba4be385c61f44b5b89b869d385a0c025b100568130fad52211cf94d); + assert_eq(hash, 0x252f337c29ffadba3745c37ae3163c5e2955ae9552d4d637ae77ecb118610d7f); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 1abc7da8088..0894987d610 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -93,12 +93,13 @@ export const GLOBAL_VARIABLES_LENGTH = 6; export const HEADER_LENGTH = 25; export const L1_TO_L2_MESSAGE_LENGTH = 8; export const L2_TO_L1_MESSAGE_LENGTH = 2; +export const MAX_BLOCK_NUMBER_LENGTH = 2; export const NEW_CONTRACT_DATA_LENGTH = 3; export const NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH = 4; export const NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH = 5; export const PARTIAL_STATE_REFERENCE_LENGTH = 8; -export const PRIVATE_CALL_STACK_ITEM_LENGTH = 224; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 219; +export const PRIVATE_CALL_STACK_ITEM_LENGTH = 225; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 220; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 194; export const STATE_REFERENCE_LENGTH = 10; export const TX_CONTEXT_DATA_LENGTH = 11; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap index b224bb72e02..6ff80f55172 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap @@ -2,41 +2,41 @@ exports[`PrivateCallStackItem computes empty item hash 1`] = ` Fr { - "asBigInt": 20684467027958304316392101103750062065585698258661695840425319450005987655477n, + "asBigInt": 20349940823526342262302682038539373747703394106664012388071476657415988950564n, "asBuffer": { "data": [ - 45, - 186, - 254, - 83, - 60, - 233, - 181, - 28, - 222, - 200, - 208, - 51, - 142, - 77, - 246, - 64, - 89, - 181, - 240, - 176, - 134, - 11, - 38, - 171, - 209, - 130, - 75, - 101, - 131, - 103, + 44, + 253, + 168, + 136, + 175, 255, - 53, + 81, + 43, + 76, + 13, + 239, + 205, + 206, + 76, + 63, + 45, + 1, + 84, + 23, + 71, + 210, + 158, + 248, + 119, + 137, + 13, + 155, + 13, + 154, + 207, + 182, + 36, ], "type": "Buffer", }, @@ -45,41 +45,41 @@ Fr { exports[`PrivateCallStackItem computes hash 1`] = ` Fr { - "asBigInt": 7438218616968792922001637713233227987470924553252444995114189182609496411594n, + "asBigInt": 31368912929139426220574054810567785038207551891329706193530974754092436253n, "asBuffer": { "data": [ - 16, - 113, - 225, - 238, - 113, - 50, - 237, - 1, - 162, - 18, - 197, - 59, - 214, - 236, - 79, - 170, - 55, - 223, - 2, - 45, - 187, - 18, - 180, - 182, + 0, + 17, 193, - 200, - 98, - 185, - 107, - 31, - 13, - 202, + 17, + 165, + 212, + 89, + 14, + 1, + 62, + 67, + 63, + 89, + 225, + 72, + 150, + 196, + 114, + 86, + 29, + 255, + 17, + 150, + 143, + 148, + 117, + 216, + 96, + 11, + 5, + 75, + 29, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap index c165f23e0e8..fa4e48b99ef 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap @@ -2,41 +2,41 @@ exports[`PrivateCircuitPublicInputs computes empty inputs hash 1`] = ` Fr { - "asBigInt": 8310627697805133815424648194774253206305695641195845252860023836876337903949n, + "asBigInt": 16818972546145497521853831848616335958462293689612411729190800589598601842047n, "asBuffer": { "data": [ - 18, - 95, - 166, - 9, + 37, + 47, + 51, + 124, + 41, + 255, + 173, 186, - 75, + 55, + 69, + 195, + 122, 227, - 133, - 198, - 31, - 68, - 181, - 184, - 155, - 134, - 157, - 56, - 90, - 12, - 2, - 91, - 16, - 5, - 104, - 19, - 15, - 173, + 22, + 60, + 94, + 41, + 85, + 174, + 149, 82, - 33, - 28, - 249, - 77, + 212, + 214, + 55, + 174, + 119, + 236, + 177, + 24, + 97, + 13, + 127, ], "type": "Buffer", }, @@ -45,41 +45,41 @@ Fr { exports[`PrivateCircuitPublicInputs hash matches snapshot 1`] = ` Fr { - "asBigInt": 5000688400975996724907548197487388544356468905029975181575474522882439962329n, + "asBigInt": 2124292127631916808382603690602710641760031672682093295647966618265858444488n, "asBuffer": { "data": [ - 11, - 14, - 74, - 17, - 190, - 231, - 31, - 17, - 77, - 170, - 228, - 246, - 240, - 236, - 94, - 127, - 246, - 123, - 223, - 189, - 95, - 25, - 53, - 125, - 165, - 254, - 136, - 10, - 61, - 92, + 4, + 178, + 78, + 134, + 65, + 182, + 140, 222, + 57, + 79, + 30, + 218, + 116, + 140, + 26, + 207, + 2, + 71, + 76, + 129, + 242, + 215, + 91, 217, + 174, + 210, + 36, + 244, + 39, + 1, + 140, + 200, ], "type": "Buffer", }, diff --git a/yarn-project/circuits.js/src/structs/index.ts b/yarn-project/circuits.js/src/structs/index.ts index 106a1e558a0..b2b54f4d053 100644 --- a/yarn-project/circuits.js/src/structs/index.ts +++ b/yarn-project/circuits.js/src/structs/index.ts @@ -29,6 +29,7 @@ export * from './kernel/public_kernel_data.js'; export * from './kernel/rollup_kernel_circuit_public_inputs.js'; export * from './kernel/rollup_kernel_data.js'; export * from './l2_to_l1_message.js'; +export * from './max_block_number.js'; export * from './membership_witness.js'; export * from './nullifier_key_validation_request.js'; export * from './partial_state_reference.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index 8e5a0038c83..29bdf30b875 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -29,6 +29,7 @@ import { NUM_FIELDS_PER_SHA256, } from '../../constants.gen.js'; import { CallRequest } from '../call_request.js'; +import { MaxBlockNumber } from '../max_block_number.js'; import { NullifierKeyValidationRequestContext } from '../nullifier_key_validation_request.js'; import { ReadRequestContext } from '../read_request.js'; import { SideEffect, SideEffectLinkedToNoteHash } from '../side_effects.js'; @@ -162,7 +163,7 @@ export class CombinedAccumulatedData { /** * The maximum block number in which this transaction can be included and be valid. */ - public maxBlockNumber: Fr, + public maxBlockNumber: MaxBlockNumber, /** * All the read requests made in this transaction. */ @@ -263,7 +264,7 @@ export class CombinedAccumulatedData { static fromBuffer(buffer: Buffer | BufferReader): CombinedAccumulatedData { const reader = BufferReader.asReader(buffer); return new CombinedAccumulatedData( - Fr.fromBuffer(reader), + reader.readObject(MaxBlockNumber), reader.readArray(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, SideEffect), reader.readArray(MAX_NULLIFIER_READ_REQUESTS_PER_TX, ReadRequestContext), reader.readArray(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, NullifierKeyValidationRequestContext), @@ -293,7 +294,7 @@ export class CombinedAccumulatedData { static empty() { return new CombinedAccumulatedData( - Fr.zero(), + MaxBlockNumber.empty(), makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, SideEffect.empty), makeTuple(MAX_NULLIFIER_READ_REQUESTS_PER_TX, ReadRequestContext.empty), makeTuple(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, NullifierKeyValidationRequestContext.empty), @@ -679,7 +680,7 @@ export class PrivateAccumulatedNonRevertibleData { /** * The maximum block number in which this transaction can be included and be valid. */ - public maxBlockNumber: Fr, + public maxBlockNumber: MaxBlockNumber, /** * The new non-revertible commitments made in this transaction. */ @@ -701,7 +702,7 @@ export class PrivateAccumulatedNonRevertibleData { static fromBuffer(buffer: Buffer | BufferReader): PrivateAccumulatedNonRevertibleData { const reader = BufferReader.asReader(buffer); return new PrivateAccumulatedNonRevertibleData( - Fr.fromBuffer(reader), + reader.readObject(MaxBlockNumber), reader.readArray(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect), reader.readArray(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), reader.readArray(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), @@ -718,7 +719,7 @@ export class PrivateAccumulatedNonRevertibleData { static empty() { return new PrivateAccumulatedNonRevertibleData( - Fr.ZERO, + MaxBlockNumber.empty(), makeTuple(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect.empty), makeTuple(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), @@ -731,7 +732,7 @@ export class PublicAccumulatedNonRevertibleData { /** * The maximum block number in which this transaction can be included and be valid. */ - public maxBlockNumber: Fr, + public maxBlockNumber: MaxBlockNumber, /** * The new non-revertible commitments made in this transaction. */ @@ -764,7 +765,7 @@ export class PublicAccumulatedNonRevertibleData { static fromBuffer(buffer: Buffer | BufferReader) { const reader = BufferReader.asReader(buffer); return new this( - Fr.fromBuffer(reader), + reader.readObject(MaxBlockNumber), reader.readArray(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect), reader.readArray(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash), reader.readArray(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest), @@ -783,7 +784,7 @@ export class PublicAccumulatedNonRevertibleData { static empty() { return new this( - Fr.ZERO, + MaxBlockNumber.empty(), makeTuple(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, SideEffect.empty), makeTuple(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, SideEffectLinkedToNoteHash.empty), makeTuple(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, CallRequest.empty), diff --git a/yarn-project/circuits.js/src/structs/max_block_number.ts b/yarn-project/circuits.js/src/structs/max_block_number.ts new file mode 100644 index 00000000000..cc124de2e26 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/max_block_number.ts @@ -0,0 +1,80 @@ +import { Fr } from '@aztec/foundation/fields'; +import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize'; +import { FieldsOf } from '@aztec/foundation/types'; + +import { MAX_BLOCK_NUMBER_LENGTH } from '../constants.gen.js'; + +/** + * Maximum block number. + */ +export class MaxBlockNumber { + constructor( + /** + * Whether a max block number was requested. + */ + public isSome: boolean, + /** + * The requested max block number, if isSome is true. + */ + public value: Fr, + ) {} + + /** + * Serialize as a buffer. + * @returns The buffer. + */ + toBuffer() { + return serializeToBuffer(...MaxBlockNumber.getFields(this)); + } + + toFields(): Fr[] { + const fields = serializeToFields(...MaxBlockNumber.getFields(this)); + if (fields.length !== MAX_BLOCK_NUMBER_LENGTH) { + throw new Error( + `Invalid number of fields for MaxBlockNumber. Expected ${MAX_BLOCK_NUMBER_LENGTH}, got ${fields.length}`, + ); + } + return fields; + } + + /** + * Deserializes MaxBlockNumber from a buffer or reader. + * @param buffer - Buffer to read from. + * @returns The MaxBlockNumber. + */ + static fromBuffer(buffer: Buffer | BufferReader): MaxBlockNumber { + const reader = BufferReader.asReader(buffer); + return new MaxBlockNumber(reader.readBoolean(), Fr.fromBuffer(reader)); + } + + static fromFields(fields: Fr[] | FieldReader): MaxBlockNumber { + const reader = FieldReader.asReader(fields); + return new MaxBlockNumber(reader.readBoolean(), reader.readField()); + } + + static empty() { + return new MaxBlockNumber(false, Fr.ZERO); + } + + isEmpty(): boolean { + return !this.isSome && this.value.isZero(); + } + + /** + * Create a new instance from a fields dictionary. + * @param fields - The dictionary. + * @returns A new instance. + */ + static from(fields: FieldsOf): MaxBlockNumber { + return new MaxBlockNumber(...MaxBlockNumber.getFields(fields)); + } + + /** + * Serialize into a field array. Low-level utility. + * @param fields - Object with fields. + * @returns The array. + */ + static getFields(fields: FieldsOf) { + return [fields.isSome, fields.value] as const; + } +} diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index cc542500bfa..fcb8537d904 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -24,6 +24,7 @@ import { Header } from '../structs/header.js'; import { SideEffect, SideEffectLinkedToNoteHash } from '../structs/side_effects.js'; import { CallContext } from './call_context.js'; import { L2ToL1Message } from './l2_to_l1_message.js'; +import { MaxBlockNumber } from './max_block_number.js'; import { NullifierKeyValidationRequest } from './nullifier_key_validation_request.js'; import { ReadRequest } from './read_request.js'; @@ -33,10 +34,6 @@ import { ReadRequest } from './read_request.js'; */ export class PrivateCircuitPublicInputs { constructor( - /** - * The maximum block number in which this transaction can be included and be valid. - */ - public maxBlockNumber: Fr, /** * Context of the call corresponding to this private circuit execution. */ @@ -53,6 +50,10 @@ export class PrivateCircuitPublicInputs { * The side-effect counter under which all side effects are non-revertible. */ public minRevertibleSideEffectCounter: Fr, + /** + * The maximum block number in which this transaction can be included and be valid. + */ + public maxBlockNumber: MaxBlockNumber, /** * Read requests created by the corresponding function call. */ @@ -151,11 +152,11 @@ export class PrivateCircuitPublicInputs { static fromBuffer(buffer: Buffer | BufferReader): PrivateCircuitPublicInputs { const reader = BufferReader.asReader(buffer); return new PrivateCircuitPublicInputs( - reader.readObject(Fr), reader.readObject(CallContext), reader.readObject(Fr), reader.readArray(RETURN_VALUES_LENGTH, Fr), reader.readObject(Fr), + reader.readObject(MaxBlockNumber), reader.readArray(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, SideEffect), reader.readArray(MAX_NULLIFIER_READ_REQUESTS_PER_CALL, ReadRequest), reader.readArray(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NullifierKeyValidationRequest), @@ -179,11 +180,11 @@ export class PrivateCircuitPublicInputs { static fromFields(fields: Fr[] | FieldReader): PrivateCircuitPublicInputs { const reader = FieldReader.asReader(fields); return new PrivateCircuitPublicInputs( - reader.readField(), reader.readObject(CallContext), reader.readField(), reader.readFieldArray(RETURN_VALUES_LENGTH), reader.readField(), + reader.readObject(MaxBlockNumber), reader.readArray(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, SideEffect), reader.readArray(MAX_NULLIFIER_READ_REQUESTS_PER_CALL, ReadRequest), reader.readArray(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NullifierKeyValidationRequest), @@ -210,11 +211,11 @@ export class PrivateCircuitPublicInputs { */ public static empty(): PrivateCircuitPublicInputs { return new PrivateCircuitPublicInputs( - Fr.ZERO, CallContext.empty(), Fr.ZERO, makeTuple(RETURN_VALUES_LENGTH, Fr.zero), Fr.ZERO, + MaxBlockNumber.empty(), makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, SideEffect.empty), makeTuple(MAX_NULLIFIER_READ_REQUESTS_PER_CALL, ReadRequest.empty), makeTuple(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NullifierKeyValidationRequest.empty), @@ -241,27 +242,27 @@ export class PrivateCircuitPublicInputs { // eslint-disable-next-line jsdoc/require-jsdoc const isZeroArray = (arr: { isZero: (...args: any[]) => boolean }[]) => isArrayEmpty(arr, item => item.isZero()); return ( - this.maxBlockNumber == new Fr(2n << (32n - 1n)), this.callContext.isEmpty() && - this.argsHash.isZero() && - isZeroArray(this.returnValues) && - this.minRevertibleSideEffectCounter.isZero() && - isEmptyArray(this.noteHashReadRequests) && - isEmptyArray(this.nullifierReadRequests) && - isEmptyArray(this.nullifierKeyValidationRequests) && - isEmptyArray(this.newNoteHashes) && - isEmptyArray(this.newNullifiers) && - isZeroArray(this.privateCallStackHashes) && - isZeroArray(this.publicCallStackHashes) && - isEmptyArray(this.newL2ToL1Msgs) && - isZeroArray(this.encryptedLogsHash) && - isZeroArray(this.unencryptedLogsHash) && - this.encryptedLogPreimagesLength.isZero() && - this.unencryptedLogPreimagesLength.isZero() && - this.historicalHeader.isEmpty() && - this.contractDeploymentData.isEmpty() && - this.chainId.isZero() && - this.version.isZero() + this.argsHash.isZero() && + isZeroArray(this.returnValues) && + this.minRevertibleSideEffectCounter.isZero() && + this.maxBlockNumber.isEmpty() && + isEmptyArray(this.noteHashReadRequests) && + isEmptyArray(this.nullifierReadRequests) && + isEmptyArray(this.nullifierKeyValidationRequests) && + isEmptyArray(this.newNoteHashes) && + isEmptyArray(this.newNullifiers) && + isZeroArray(this.privateCallStackHashes) && + isZeroArray(this.publicCallStackHashes) && + isEmptyArray(this.newL2ToL1Msgs) && + isZeroArray(this.encryptedLogsHash) && + isZeroArray(this.unencryptedLogsHash) && + this.encryptedLogPreimagesLength.isZero() && + this.unencryptedLogPreimagesLength.isZero() && + this.historicalHeader.isEmpty() && + this.contractDeploymentData.isEmpty() && + this.chainId.isZero() && + this.version.isZero() ); } @@ -272,11 +273,11 @@ export class PrivateCircuitPublicInputs { */ static getFields(fields: FieldsOf) { return [ - fields.maxBlockNumber, fields.callContext, fields.argsHash, fields.returnValues, fields.minRevertibleSideEffectCounter, + fields.maxBlockNumber, fields.noteHashReadRequests, fields.nullifierReadRequests, fields.nullifierKeyValidationRequests, diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 9748d8b1cb3..dc91f710580 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -65,6 +65,7 @@ import { MAX_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_REVERTIBLE_PUBLIC_DATA_READS_PER_TX, MAX_REVERTIBLE_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + MaxBlockNumber, MembershipWitness, MergeRollupInputs, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, @@ -262,7 +263,7 @@ export function makeCombinedAccumulatedData(seed = 1, full = false): CombinedAcc const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new CombinedAccumulatedData( - new Fr(seed + 0x31415), // max block number + new MaxBlockNumber(true, new Fr(seed + 0x31415)), tupleGenerator(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, sideEffectFromNumber, seed + 0x80), tupleGenerator(MAX_NULLIFIER_READ_REQUESTS_PER_TX, readRequestContextFromNumber, seed + 0x90), tupleGenerator( @@ -347,7 +348,7 @@ export function makeAccumulatedNonRevertibleData(seed = 1, full = false): Privat const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new PrivateAccumulatedNonRevertibleData( - new Fr(seed + 0x31415), // max block number + new MaxBlockNumber(true, new Fr(seed + 0x31415)), tupleGenerator(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, sideEffectFromNumber, seed + 0x101), tupleGenerator(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x201), tupleGenerator(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x501), @@ -358,7 +359,7 @@ export function makeCombinedAccumulatedNonRevertibleData(seed = 1, full = false) const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new PublicAccumulatedNonRevertibleData( - new Fr(seed + 0x31415), // max block number + new MaxBlockNumber(true, new Fr(seed + 0x31415)), tupleGenerator(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, sideEffectFromNumber, seed + 0x101), tupleGenerator(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x201), tupleGenerator(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x501), @@ -850,7 +851,7 @@ export function makePrivateCallStackItem(seed = 1): PrivateCallStackItem { */ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicInputs { return PrivateCircuitPublicInputs.from({ - maxBlockNumber: new Fr(seed + 0x31415), + maxBlockNumber: new MaxBlockNumber(true, new Fr(seed + 0x31415)), callContext: new CallContext( makeAztecAddress(seed + 1), makeAztecAddress(seed + 2), diff --git a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts index 2aefef755f7..4e3f71f98ba 100644 --- a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts @@ -46,6 +46,7 @@ import { MAX_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_REVERTIBLE_PUBLIC_DATA_READS_PER_TX, MAX_REVERTIBLE_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + MaxBlockNumber, MembershipWitness, MergeRollupInputs, NULLIFIER_TREE_HEIGHT, @@ -113,6 +114,7 @@ import { FunctionSelector as FunctionSelectorNoir, GrumpkinPrivateKey as GrumpkinPrivateKeyNoir, L2ToL1Message as L2ToL1MessageNoir, + MaxBlockNumber as MaxBlockNumberNoir, NewContractData as NewContractDataNoir, AztecAddress as NoirAztecAddress, ContractClassId as NoirContractClassId, @@ -390,6 +392,29 @@ export function mapTxContextFromNoir(txContext: TxContextNoir): TxContext { ); } +/** + * Maps a max block number to a noir max block number. + * @param maxBlockNumber - The max block number. + * @returns The noir max block number. + */ +export function mapMaxBlockNumberToNoir(maxBlockNumber: MaxBlockNumber): MaxBlockNumberNoir { + return { + _opt: { + _is_some: maxBlockNumber.isSome, + _value: mapFieldToNoir(maxBlockNumber.value), + }, + }; +} + +/** + * Maps a noir max block number to a max block number. + * @param maxBlockNumber - The noir max block number. + * @returns The max block number. + */ +export function mapMaxBlockNumberFromNoir(maxBlockNumber: MaxBlockNumberNoir): MaxBlockNumber { + return new MaxBlockNumber(maxBlockNumber._opt._is_some, mapFieldFromNoir(maxBlockNumber._opt._value)); +} + /** * Maps a function selector to a noir function selector. * @param functionSelector - The function selector. @@ -719,7 +744,7 @@ export function mapPrivateCircuitPublicInputsToNoir( privateCircuitPublicInputs: PrivateCircuitPublicInputs, ): PrivateCircuitPublicInputsNoir { return { - max_block_number: mapFieldToNoir(privateCircuitPublicInputs.maxBlockNumber), + max_block_number: mapMaxBlockNumberToNoir(privateCircuitPublicInputs.maxBlockNumber), call_context: mapCallContextToNoir(privateCircuitPublicInputs.callContext), args_hash: mapFieldToNoir(privateCircuitPublicInputs.argsHash), return_values: mapTuple(privateCircuitPublicInputs.returnValues, mapFieldToNoir), @@ -973,7 +998,7 @@ export function mapCombinedAccumulatedDataFromNoir( combinedAccumulatedData: CombinedAccumulatedDataNoir, ): CombinedAccumulatedData { return new CombinedAccumulatedData( - mapFieldFromNoir(combinedAccumulatedData.max_block_number), + mapMaxBlockNumberFromNoir(combinedAccumulatedData.max_block_number), mapTupleFromNoir( combinedAccumulatedData.note_hash_read_requests, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, @@ -1063,7 +1088,7 @@ export function mapAccumulatedNonRevertibleDataFromNoir( accumulatedMetaData: PrivateAccumulatedNonRevertibleDataNoir, ): PrivateAccumulatedNonRevertibleData { return new PrivateAccumulatedNonRevertibleData( - mapFieldFromNoir(accumulatedMetaData.max_block_number), + mapMaxBlockNumberFromNoir(accumulatedMetaData.max_block_number), mapTupleFromNoir(accumulatedMetaData.new_note_hashes, MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir( accumulatedMetaData.new_nullifiers, @@ -1087,7 +1112,7 @@ export function mapAccumulatedNonRevertibleDataToNoir( accumulatedMetaData: PrivateAccumulatedNonRevertibleData, ): PrivateAccumulatedNonRevertibleDataNoir { return { - max_block_number: mapFieldToNoir(accumulatedMetaData.maxBlockNumber), + max_block_number: mapMaxBlockNumberToNoir(accumulatedMetaData.maxBlockNumber), new_note_hashes: mapTuple(accumulatedMetaData.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(accumulatedMetaData.newNullifiers, mapSideEffectLinkedToNoir), public_call_stack: mapTuple(accumulatedMetaData.publicCallStack, mapCallRequestToNoir), @@ -1120,7 +1145,7 @@ export function mapCombinedAccumulatedDataToNoir( combinedAccumulatedData: CombinedAccumulatedData, ): CombinedAccumulatedDataNoir { return { - max_block_number: mapFieldToNoir(combinedAccumulatedData.maxBlockNumber), + max_block_number: mapMaxBlockNumberToNoir(combinedAccumulatedData.maxBlockNumber), note_hash_read_requests: mapTuple(combinedAccumulatedData.noteHashReadRequests, mapSideEffectToNoir), nullifier_read_requests: mapTuple(combinedAccumulatedData.nullifierReadRequests, mapReadRequestContextToNoir), nullifier_key_validation_requests: mapTuple( @@ -1236,7 +1261,7 @@ export function mapPublicAccumulatedNonRevertibleDataToNoir( data: PublicAccumulatedNonRevertibleData, ): PublicAccumulatedNonRevertibleDataNoir { return { - max_block_number: mapFieldToNoir(data.maxBlockNumber), + max_block_number: mapMaxBlockNumberToNoir(data.maxBlockNumber), new_note_hashes: mapTuple(data.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(data.newNullifiers, mapSideEffectLinkedToNoir), public_call_stack: mapTuple(data.publicCallStack, mapCallRequestToNoir), @@ -1423,7 +1448,7 @@ export function mapPublicAccumulatedNonRevertibleDataFromNoir( data: PublicAccumulatedNonRevertibleDataNoir, ): PublicAccumulatedNonRevertibleData { return new PublicAccumulatedNonRevertibleData( - mapFieldFromNoir(data.max_block_number), + mapMaxBlockNumberFromNoir(data.max_block_number), mapTupleFromNoir(data.new_note_hashes, MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(data.new_nullifiers, MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), mapTupleFromNoir( From 101f637d38b39f1382ab1df235eddedbddbcb19e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 14 Mar 2024 22:20:56 +0000 Subject: [PATCH 13/36] Add end to end test --- .circleci/config.yml | 12 +++ .../contracts/test_contract/src/main.nr | 21 +++++- .../src/e2e_max_block_number.test.ts | 74 +++++++++++++++++++ 3 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 yarn-project/end-to-end/src/e2e_max_block_number.test.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 92ba22e97a7..837c6297d4e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -636,6 +636,18 @@ jobs: command: cond_spot_run_compose end-to-end 4 ./scripts/docker-compose.yml TEST=e2e_private_voting_contract.test.ts aztec_manifest_key: end-to-end + e2e-max-block-number: + docker: + - image: aztecprotocol/alpine-build-image + resource_class: small + steps: + - *checkout + - *setup_env + - run: + name: "Test" + command: cond_spot_run_compose end-to-end 4 ./scripts/docker-compose.yml TEST=e2e_max_block_number.test.ts + aztec_manifest_key: end-to-end + e2e-multiple-accounts-1-enc-key: docker: - image: aztecprotocol/alpine-build-image diff --git a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr index 34943b7cedc..67956108adb 100644 --- a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr @@ -1,8 +1,8 @@ // A contract used for testing a random hodgepodge of small features from simulator and end-to-end tests. contract Test { use dep::aztec::prelude::{ - AztecAddress, EthAddress, NoteHeader, NoteGetterOptions, NoteViewerOptions, PrivateContext, - PrivateImmutable, PrivateSet + AztecAddress, EthAddress, FunctionSelector, NoteHeader, NoteGetterOptions, NoteViewerOptions, + PrivateContext, PrivateImmutable, PrivateSet }; use dep::aztec::protocol_types::{ @@ -69,6 +69,23 @@ contract Test { context.this_address() } + #[aztec(private)] + fn request_max_block_number(max_block_number: u32, enqueue_public_call: bool) { + context.request_max_block_number(max_block_number); + + if enqueue_public_call { + let _ = context.call_public_function( + context.this_address(), + FunctionSelector::from_signature("dummy_public_call()"), + [] + ); + } + } + + #[aztec(public)] + #[aztec(internal)] + fn dummy_public_call() {} + #[aztec(private)] fn call_create_note(value: Field, owner: AztecAddress, storage_slot: Field) { assert( diff --git a/yarn-project/end-to-end/src/e2e_max_block_number.test.ts b/yarn-project/end-to-end/src/e2e_max_block_number.test.ts new file mode 100644 index 00000000000..9add997d377 --- /dev/null +++ b/yarn-project/end-to-end/src/e2e_max_block_number.test.ts @@ -0,0 +1,74 @@ +import { PXE, Wallet } from '@aztec/aztec.js'; +import { TestContract } from '@aztec/noir-contracts.js'; + +import { setup } from './fixtures/utils.js'; + +describe('e2e_max_block_number', () => { + let wallet: Wallet; + let teardown: () => Promise; + + let pxe: PXE; + let contract: TestContract; + + beforeAll(async () => { + ({ teardown, wallet, pxe } = await setup()); + contract = await TestContract.deploy(wallet).send().deployed(); + }, 25_000); + + afterAll(() => teardown()); + + describe('when requesting max block numbers higher than the mined one', () => { + let maxBlockNumber: number; + + beforeEach(async () => { + maxBlockNumber = (await pxe.getBlockNumber()) + 20; + }); + + describe('with no enqueued public calls', () => { + const enqueuePublicCall = false; + + it('does not invalidate the transaction', async () => { + await contract.methods.request_max_block_number(maxBlockNumber, enqueuePublicCall).send().wait(); + }); + }); + + describe('with an enqueued public call', () => { + const enqueuePublicCall = true; + + it('does not invalidate the transaction', async () => { + await contract.methods.request_max_block_number(maxBlockNumber, enqueuePublicCall).send().wait(); + }); + }); + }); + + // These currently cause the sequencer to error out with + // aztec:sequencer ERROR Rolling back world state DB due to error assembling block: Error: Assertion failed: kernel max_block_number is smaller than block number + // and it it seemingly retries until the test timeouts. + describe.skip('when requesting max block numbers lower than the mined one', () => { + let maxBlockNumber: number; + + beforeEach(async () => { + maxBlockNumber = await pxe.getBlockNumber(); + }); + + describe('with no enqueued public calls', () => { + const enqueuePublicCall = false; + + it('invalidates the transaction', async () => { + await expect( + contract.methods.request_max_block_number(maxBlockNumber, enqueuePublicCall).send().wait(), + ).rejects.toThrow(); + }); + }); + + describe('with an enqueued public call', () => { + const enqueuePublicCall = true; + + it('invalidates the transaction', async () => { + await expect( + contract.methods.request_max_block_number(maxBlockNumber, enqueuePublicCall).send().wait(), + ).rejects.toThrow(); + }); + }); + }); +}); From 5feac31c34fda281fe0eff9e03a6e10a69bb888d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 13:12:27 +0000 Subject: [PATCH 14/36] Propagating struct changes in TS --- .../types/src/abis/private_call_stack_item.nr | 2 +- .../rollup_validation_requests.nr | 4 +- .../circuit-types/src/mocks_to_purge.ts | 4 +- .../__snapshots__/contract_class.test.ts.snap | 10 +- .../private_call_stack_item.test.ts.snap | 10 +- yarn-project/circuits.js/src/structs/index.ts | 1 + ...ivate_kernel_tail_circuit_public_inputs.ts | 8 ++ .../public_kernel_circuit_public_inputs.ts | 9 ++ .../rollup_kernel_circuit_public_inputs.ts | 7 ++ .../src/structs/rollup_validation_requests.ts | 46 ++++++++ .../src/structs/validation_requests.ts | 9 ++ .../circuits.js/src/tests/factories.ts | 9 ++ yarn-project/ethereum/src/constants.ts | 1 - .../src/type_conversion.ts | 106 ++++++------------ .../src/block_builder/solo_block_builder.ts | 1 + .../src/sequencer/processed_tx.ts | 2 + .../src/sequencer/public_processor.test.ts | 1 + yarn-project/yarn.lock | 2 +- 18 files changed, 142 insertions(+), 90 deletions(-) create mode 100644 yarn-project/circuits.js/src/structs/rollup_validation_requests.ts diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr index 58fd5f06ccc..925e84996a7 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr @@ -75,6 +75,6 @@ fn empty_hash() { let hash = item.hash(); // Value from private_call_stack_item.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x134b57e317f1554b9c4f547e617338fcc8ff04c6d96a278f1752b26a462c5d25; + let test_data_empty_hash = 0x008473ad34c80cbf824246b499feeeb64eee476ebcaaf585747f72a3383c09e9; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/rollup_validation_requests.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/rollup_validation_requests.nr index 24e55ffea8d..5e2acde994e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/rollup_validation_requests.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/rollup_validation_requests.nr @@ -1,7 +1,7 @@ use crate::{abis::max_block_number::MaxBlockNumber}; -// These are validation request that cannot be fulfilled in the current context (private or public), and must be instead -// forwarded to the rollup for it to take care of them. +// These are validation requests that cannot be fulfilled in the current context (private or public), and must be +// instead forwarded to the rollup for it to take care of them. struct RollupValidationRequests { max_block_number: MaxBlockNumber, } diff --git a/yarn-project/circuit-types/src/mocks_to_purge.ts b/yarn-project/circuit-types/src/mocks_to_purge.ts index a33e5214be6..1e6a64b189b 100644 --- a/yarn-project/circuit-types/src/mocks_to_purge.ts +++ b/yarn-project/circuit-types/src/mocks_to_purge.ts @@ -20,7 +20,6 @@ import { MAX_REVERTIBLE_NOTE_HASHES_PER_TX, MAX_REVERTIBLE_NULLIFIERS_PER_TX, MAX_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, - MaxBlockNumber, Point, PrivateAccumulatedNonRevertibleData, PrivateAccumulatedRevertibleData, @@ -30,6 +29,7 @@ import { SideEffectLinkedToNoteHash, TxContext, } from '@aztec/circuits.js'; +import { makeRollupValidationRequests } from '@aztec/circuits.js/testing'; import { makeHalfFullTuple, makeTuple, range } from '@aztec/foundation/array'; import { makeHeader } from './l2_block_code_to_purge.js'; @@ -42,6 +42,7 @@ import { makeHeader } from './l2_block_code_to_purge.js'; export function makePrivateKernelTailCircuitPublicInputs(seed = 1, full = true): PrivateKernelTailCircuitPublicInputs { return new PrivateKernelTailCircuitPublicInputs( makeAggregationObject(seed), + makeRollupValidationRequests(seed), makeAccumulatedNonRevertibleData(seed + 0x100, full), makeFinalAccumulatedData(seed + 0x200, full), makeConstantData(seed + 0x300), @@ -83,7 +84,6 @@ export function makeAccumulatedNonRevertibleData(seed = 1, full = false): Privat const tupleGenerator = full ? makeTuple : makeHalfFullTuple; return new PrivateAccumulatedNonRevertibleData( - new MaxBlockNumber(true, new Fr(seed + 0x31415)), tupleGenerator(MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, sideEffectFromNumber, seed + 0x101), tupleGenerator(MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, sideEffectLinkedFromNumber, seed + 0x201), tupleGenerator(MAX_NON_REVERTIBLE_PUBLIC_CALL_STACK_LENGTH_PER_TX, makeCallRequest, seed + 0x501), 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 677772fdfe7..b6ca5f6979c 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": "0x1f8b08000000000000ffed9d779c14c5baf77b6141647645ccd9c5848ae232647681c19c30a38888b02c2b28b0443163961ccc19094ace02028a80184ecec993f4783ce9de7bcef9dc3fee7bef1b7c6fd74c3d777f5b542f3b6bd7f09b9deacfa776aa9fadeee75bbf7eba3a5577fd330882a22033b50cd319c1fe93fc3fa57fcbbfd9d425c67595bbe42cca13ce1679c2d9324f388bf384b3559e70b6ce13ce43f284b34d9e701e1a23a7626b11d49fe2e66deb40d7b8191379a669491e685a9a679a1e96079ab60bf2a38d3a3c4f38dbe709e71179c279649e701e95279c47e709e73179c2796c9e701e97279cc7e709e70979c279629e709e94279c27e709e72979c2796a9e7096e50967873ce13c2d4f384fcf13ce33f284f3cc3ce13c2b46ce4ec0d951ff9ead7fcfd1bfe7ea5f297b9efe3d5fff76d6752cd6f31728ae30a9873449e37f5dc3d42d4cddc3d4c3f85fcf30f50a53ef30f5d1ff2bd3ffab08536598fa86a95f98fa6b0d0684e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334304cd784e9da305d17a6ebc37443986e0cd34d611a14a69bc3744b980687e9d6300d31586e0bd3d030dd1ea66161ba234cc3c334224c55611a19a6ea308d0a534d98ee0cd3e8308d09d35d61ba3b4c63c3342e4ce3c3541ba609619a18a649619a1ca629619a1aa67bc2342d4cf786e9be30dd6f68f640981e0cd343617ad8e09c1ea647c2f468981e0bd3e3617a224c4f86e9a9303d1da619619a19a659619a1da639619a1ba679619a1fa605615a18a667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c2f46a985e0bd3eb617a43b3c88eb0284c6f8669719896846969989685e9ad30bd1da6e5615a11a695615a15a6d5615a13a6b5615a17a6f561da10a68d61da14a6cd617a274c5bc2b4354cdbc2f46e98b6876947987686e9bd30bd1fa65d61fa204cbbc3b4274c7bc3f46198f685e9a3307d1ca64fc2f46998be15a66f87e93b61fa6e98be17a6ef1b9aff204c3f0cd38fc2f4636dfb89fefda92e2bf7ef7e16a69febfc2ff4ef2ff5efaff4ef67c632bf0ed36f0cdb6fc3f43bc3f6fb307daef35fe8df3fe8df2ff5ef1ff5ef57faf74ffaf7cffaf72ffaf7affaf76ffaf75ff4efbfeadf7fd3bf7fd7bfffd0bfff0cd3e60e997c9ba06e4a0531b551dd6ad2cf7e44fc8e41fd4969d152ff4f7ecbb4bd58cfcbaf68d74acfb732ecadf57c6b633d6df47c1bc3de5ecfb737ec47eaf9230dfbd17afe68c37eac9e3fd6b09fa1e7cf007b22807bc3daae6c2db5a9086c12af2dc0d64adb5a82adb5ac0e6c87685b2bb0c9f66d0db643b5ed10b0b5d5b636604b68dba1a265984ab42d15c4152be523d47a4be35eaf7e5e7658fcbc23d57adb39e23d3c7ede516abded1df0aaf83842afeb70889b23b5ad3dd88ed2b623c076b4b61d09b663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ad4cdb4e019b6e728353c1769ab69581ed746deb00b633b4ed34b09da96da783ed2c6d3b036cd2fe9e0936395f3c4bdb54db7168112ca3edd26ea59791361b6ce7487b0db673a5ad065b2769a7c1761ef816dbf9d0d688adb3b649bba5fed747e753415cfb49b246adb722eef5866b56ebed1bff7ad3cf1cfb05755aa7c04f0568d55fe763ecd7d4057d17e9247ec45e0cf92ba1ac94133de4d823ecea1853a9f3fd1b58ae8fb15c2994a9b4d43f15c45bffbe064f5f83b915e4ddc46cd7ae3e661b3d651db383a1ac197b721ed41c637620703888d99e3e661b3d651db33550d68c3d39176e8e317b1b703888d92a37319b2cf7319bb96f1604f6d893eba1e618b3638023fe98edee63b6f153d631fb189435634fae899b63cc4e038ef863b667953f3768f49475cc2e80b266ecc9fd99e618b34f02878398adf1ed6ca3a7ac63f60d286bc69edc2b6c8e31fb2c70c41fb3bd1dc56c571fb341e6196810d8634fee5b37c7985d0c1cf1c7ec487f7fb6f153d631bb03ca9ab127cf509a63ccaed779f59ce127fa39c34960fba9b69d0cbcf1c776757747b19df4b19de91b1204f61895e779cd31b63fd07915c7bf80fe0862fba5b67500dbafb4ed34b07da66da743bd1cec03557e1f68f494f53ef01b286bc6b23c5b6e8efbc08f80c341cc56fb986df49475ccfe0dca9ab127fd1c9a63ccfe1e381cc46c8d8fd9464f59c7ec7f425933f6ced6f9e618b3d2d7549d2f7ca1cf17ce05db1fb4ad13d8bed4b6f3c0f6476d3b1f6c5f695b67b0fd49db2e00db9fb5ad1c6c7fd1b62e60fbabb625c1f6376deb0ab67fd1b66e60fb576deb0eb67fd3b61e60fbbbb6f504db3fb4ad17d8fea96dbdb54d3def92be5772deda06f85341bcdb56fa5dcaba65be4b0e7cb7337cb7cba1eff686eff616df4907be13e043a622633e05f9a45b9ef252e0415fdde2f7d555d5bd6bd0f8ba77039eee0eea9e001f8de1e90e3c3de2e749f7ffed19ff7ad3dbb8aba169027c75857af57250af22f025eb9679f1570a366c5b7b59187bc7cf982c025fb26e99ef0d8c62c3b65edeb992fd471d0f3b16d5f13ad897d2e744e24fbe5b261cddc02e65aee850c7d649b395c0fff1b8d7c3b0398acb745c882f59b7cc8bbf12a84f8fdc33261bcbd8dd6074d54614812f59b7f75db71d248fc77107d73ad6364d7c57e4c0776fc37737c337b69d3235746ceb0dccb15f73ea635b65fceb2dc7eb13b936143f78fe80d77071d5097dcbb5a1f8117b31e4af29aa2b2be5440f6987855dc5b26c4b643797eb652c570a652a2cf54f05f1d6bfd2e0a93498d536b9088e850ef687740c54181c32df0db4ab8cd0ae02b49332678376aedab33e068fccf7001e69c77a028fab6ba2289e5c5c8f1dc8379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6576f60b49dab38b89e69f05ca53b308aad0ff07475a459d476ed4ae2db41aca4db23f121e7e6b2fff600bb94e9ad5fa8536de55dd056ba88118c47991a7bcd1bff764aa6afc1bb67c183dbcec175551747f1588ef76fbe0ee28d35b35dea6e6815758fc7555bded5e09179f1e7993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999f199f2761bf2d29d78384d1ecffe6ea3e7ffafb877a5db27ef55ce7ff38ed0f962cc7fe31d20fe25ca3cec550a6b4455dd9ff0ffdc1cce754d847b2875bedd2db12fb63a6605efc615f2bdc960cfd9dca62f39d1ce9ea799bfa0698fa8ea6d9f7b387455317fd9f51d3224353ec8f7f9ec1a3e2b4b2651d9b8b677fd93e8b44ad241fe7b3bdd2c01eebf16f9764bd67d62d82faed071e675cf5df91b65a9e975718be8ba1cc892deab68df4ad923186bb1acb61bf1f59b72c732ed82b8d75b7d3cb0a472b63fd3d615929730ab4a97b5ad469e6a0ad4c66db771d9f9bc77f1cce3cc7ef9a054f17e071d1ce383adf28c77d20eee7f866ff34db798c94c1be7d0efa5536d8df49fc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667563ce6b3567cbfb61b09638efa3ea49f67c8b7ca64fde9ef05b7a8f3ebfa399c3c73ea64d419df1dfd678bbab29b75be24d8bfbf43d4b674f57d8aa86d29fef0db33f82cc8c573dd22f025eb4e5ab4907c596cbe33cff15d8c0d21cff1bb1aba76b368ea6a7fc567aca829eeafdd0d1e7c361af56d9fa46173d977282a2ec41fee4b49b0491edf8f76b19df15862f6eb117ff8fcfa3b5adb7681ab6d9f2c77d96ee0775352c1fef18ddf53f921b47d3fd679ecc3817d47beb0fc5fa6869e538b7eaace0ebeaf595e04eb92ed6bfbb6e700608dc977175c57914e030c0d8a21ff798bbab2524eca8ad6c2aef611f9060cb29bcb7537962b8532fd2cf54f05f1d6dffcd66a7f83596d939f419c7d01c77f576d52bf088dce058da48ce36f365afb579afd0ab11d6d6d949165f15b747f85362aaaffa8ed18e0fa3826ebb61dc7cce34263fa79167a3fadff82f622ee7e5aff053184fdb40263fd9d60fdc2d53a883eb64899ff67acdf3c279765b01fd8ffec27f03d97a4ce67734e7eb0aeaf6ce7e4b85c54dd15337e072d152333c604b2e079829469abb5966d5619c1dddbb26c69c4b2a295f9adb092607ffddc7c672db3cff737ea22718ddf20973247425ddc9cb764ce015d7d532e057552f9a4a5ae52e638d8d74ed0f9046c27dc6fcfb1fc5fa686ce01710cf70be3af737afb5e049c29f083be2f06d6987c7741df720e287ec45e0cf9b35bd6959572a287682dec6a1f91f328643797ab30962b8532032cf54f05f1d6ff4283e74283596d939321cece817ee8aedaea01111a75028da40cde53b47d07d476afc3d5fb1b51e752f8fe92797e85c74937e74df6f358f3be9aed1ca193c18fe7083da19d4d58ca9af70be5781967bf617c57a227f8c577255c7dbbb90fe89682793c2f3898be5d7cc756f98b1a33a14f0e7c478d99900bdfed0ddfed73e8db6bee3567d2dcc11804e9f7cff09ba56a6ae8bc14c72590e55a00a38bb11c1241fd6f8f1f8811c77790e55a02a38be343b6df3eef098cb25c3130ba78b714c7df680c237e63188ff3c2e8e05bb15d9afaad58bca7d71a1899ded9c467538700a38bf3e2a6beab87e7f36de0d7d5b8445db3604c02a32c772830bab8378ed7328d61c4eb2259ae2d30ba788695edf84ef8ed79bcb7ec92b1a163bbe3be28c96cefbd54bae569f05c037d3b18d730ad05de673c90167dddf23478ee83be1ddcf74b6b81e30c1e480b7c36e862dcc34450ff39dc8178f0f9a52c770430a61c31f6cf8231058cff73af18180738624c65c1380018c57e14303ab8ff9a661c900523dea794e58e06c68b1c315e9805e345c028cb1d038c2eeea526c06f63182f064659ee5860bcc411e3c559305e028cb2dc71c078a923c64bb260bc141865b9e381f132478c9766c1781930ca722700e3e58e182fcb82f1726094e54e04c62b1c315e9e05e315c028cb9d048c573a62bc220bc62b8151963b1918af72c47865168c5701a32c770a305eed88f1aa2c18af064659ee54601ce888f1ea2c180702a32c57068cd738621c9805e335c028cb7500c66b1d315e9305e3b5c028cb9d068cd73962bc360bc6eb8051963b1d18af77c4785d168cd703a32c770630dee088f1fa2c186f004659ee4c60bcd111e30d5930de088cb2dc59c0789323c61bb360bc09186fb4300e72c47853168c838051963b0f186f8e9f317d2d3d280bc69b81e796f879d29add9c05cf2d6e79d2dfd5bbd9e2ebd6f87da5b7c5e0a0f175bf157886c4cf93de16b766c1230ca5b01c6a765bfc8c69cd8664c1781bf00c8d9f27add96d59f00c05cd6eb368767bfc8c69cd8666c1783bf00c8b9f27add9ed59f00c03cd6eb7687647fc8c69cd8665c17807f00c8f9f27add91d59f00c0fea34bbc3a2d988f819d39a0dcf827104f054c5cf93d66c44163c55a0d9088b6623e3674c6b569505e348e0a98e9f27add9c82c78aa41b39116cd46c5cf98d6ac3a0bc651c053133f4f5ab35159f0d48066a32c9add193f635ab39a2c18ef049ed1f1f3a435bb330b9ed1a0d99d16cdc6c4cf98d66c74168c6380e7aef879d29a8dc982e72ed06c8c45b3bb1d31de9505e3dd169eb8bf937d97c5d73847751f1b34beeec2500acb613f89f18e18c765c1381e186539ec2751eb88717c168cb5c028cb251c3336d44fa2167c4f88df77ba5daa0d1aafcf04b73c0df69340df131d69312168bc1613ddf234d84f027d4f72a4c5c4a0f15a4c029ec90eb448808fc6f00843292c87fd24a638629c9c05e3146094e5b09fc454478c53b2609c0a8cb21cf693b8c711e3d42c18ef0146590efb494c73c4784f168cd3805196c37e12f73a629c9605e3bdc028cb613f89fb1c31de9b05e37dc028cb613f89fb1d31de9705e3fdc028cb613f89071c31de9f05e303c028cb613f89071d313e9005e383c028cb613f89871c313e9805e343c028cb613f89871d313e9405e3c3c028cb613f89e98e181fce82713a30ca72d84fe211478cd3b3607c04186539ec27f1a823c647b2607c141865b9bb1d333674fdf26833f71d75add2dc7d475d973477df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f771cee4fb3107be13e043a622633e0579612885e5eef68ccd9a1179cae2e329c7baa3afc709eafeb885a7c851ddd1d713047517867c637c2c0f18711ff73a369dd1b18ec9a6322a9e271df13c9105cf93c0f394239e27b3e0790a789e8e9f271d534f65c1230ca5b0dcdd79c0f8581e307a1dbd8e4c8c5ec7c2d1d1337a46cfe8190f06633eb4e19e312fe231d95446c533237e9eb4664f67c133033493e56e71cb986c2aa3e299193f4f5ab31959f0cc04cd66583473c0986c2aa3e299153f4f5ab39959f0cc02cd665a3473c0986c2aa3e2991d3f4f5ab35959f0cc06cd66593473c0986c2aa3e299133f4f5ab3d959f0cc01cd665b3473c0986c2aa3e2991b3f4f5ab33959f0cc05cde6583473c0986c2aa3e299173f4f5ab3b959f0cc03cde65a3473c0986c2aa3e2991f3f4f5ab37959f0cc07cde6593473c0986c2aa3e259103f4f5ab3f959f02c00cde65b346365bc3b0f181fcb0346c73a269bcaa878163ae2599005cf42e079c611cfc22c789e019e67e3e749c7d43359f00843292c77771e303e96078c5e47af2313a3d7b17074f48c9ed13366c7f8781e30fa6ded1959191d5c5f35f80ecd33cddc77d43b34cddd77d43b34cdddb78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c33f97e2e7edfc96cbf31f31cf0b8f8e68da37a96abf53eafd7f5758cfa29ad5e30b47ac6d0aa14ca3c0ffabde040bf22f02beb9679f1972d7347026647be938785eb3814ea2f3e1e33f450fe5f7454f7a8b6fec566ee3baaad6feebea3dafae6eedbc7b98ff342f0ede3dcc77921f8f671eee39cc537e65b0575e7edf2fd53b58e9774be58cf4bf9c7c12e65261f92f96d17f87dc8856fbf0ff9634521f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7395f9c633c54e6802730788206781690f14c25e3994dc6339a8c672819cfb5643c1791f13c48c6d38d8c670219cf48329e9bc978ae24e3b9808ca71f19cf34329ede643c73c878ee22e3798a8c671819cff5643c9790f13c4cc69324e39944c6338a8ce756329eabc97852643cf791f1f424e339878c671c19cf5c329eb3c9788693f13c4dc6732319cf61643cedc8782e23e379828ce77c329e0a329e47c878e693f14c21e3b9938ce736329e72329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f15c45c6d39f8ce75e329e5e643c63c9783a92f1dc41c67303194f2ebe679a0d4f09194f2919cfa5643c8f92f14c27e3e942c633998c6716194f0d19cf10329e81643c03c878ee27e3e941c6339e8c670419cf4d643c4f92f11c4ec6d39e8ce772329e22029e44b0ff182609f8ff73606b612cab3efb3aa743ddff5fd6f616b0cc2b3adfd2b2ee97c126df927dc5b22ceaf432d425a5f3e5df6c4aeb84be52302ffe4a80e315129ecbc978da93f11c4ec6f32419cf4d643c23c878c693f1f420e3b99f8c670019cf40329e21643c35643cb3c8782693f17421e3994ec6f32819cfa5643ca5643c25643ccf91f1dc40c67307194f47329eb1643cbdc878ee25e3e94fc6731519cf60329e6a329e99643c13c978ba92f13c44c6733119cf75643cb793f17422e31943c6d3878ce71e329e85643c7dc9785a92f15c41c6732e19cf20329e2a329e19643cb5643cf3c878ba93f13c40c67321194f67329e6bc878cac9786e23e3b9938c670a19cf7c329e47c8782ac878ce27e379828ce732329e76643c8791f1dc48c6f33419cf70329eb3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329e4a0bcf738e78e47d7759b7cc3f47e2dbc1762857eb7dd5519d5ed3eb6aa5d72bfce2af18ca4c6f9bf955cf3f7059e132bf4f80efe6bc061abde6a82eb23d8a8ced83be5f72e4db1c9f4fe65f6ae6bedb19bedb1588eff686eff605e2dbc7b98ff342f0ede3dcc77921f8f671eee39cc9b7836b83247e274da622633e0579bc5e70f17d3947f5ac779df8758cfa29ad5e37b432afad4aa1ccaba0dfeb0ef4b35d7bcabcf8cb96b9230133c64559106f5cbc117f9d92aadfe1a1a0eb1b86be58af458e348d3a862c6ae6bea38e21cddd77d431a4b9fbf671eee3bc107cfb38f7715e08be7d9cfb3867f2fda6cec778dd588e3ed4f345b91e7813fc2ed1f9a218fdaa752dd6eb2ad6eb168e25609732ff1b9e6bfa7ddeeff371f9f6c7361fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be99e3dccc4b7ff1b381cd557ffea858ccc5bb0407d377542c3677df51b1d8dc7dfb38f771cee47ba903df09f02153437dfc9602cf62073c8eea997eb6b1cca8d373469d4aa10c1ee39739a86711f89575cbfc32e091a912785cc44163b639f22c20e3994ac6339b8c673419cf50329e6bc9782e22e379908ca71b19cf04329e91643c3793f15c49c67301194f3f329e69643cbdc978e690f1dc45c6f31419cf30329eebc9782e21e379988c2749c633898c671419cfad643c5793f1a4c878ee23e3e949c6730e19cf38329eb9643cc3c9789e26e3b9918ce730329e76643c9791f13c41c6733e194f0519cf23643cf3c978a690f1dc49c6731b194f3919cf22329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f1bc4ec67315194f7f329e7bc9787a91f18c25e3e948c6730719cf0d643c25643ca5643c9792f13c4ac6339d8ca70b19cf64329e59643c35643c43c8780692f10c20e3b99f8ca70719cf78329e11643c3791f13c49c67338194f7b329ecbc9788a087812c1feeffe27e0ffaf834dde517f0e6c6fe9fc62b0b5b0f868a9f3cbc056acf3b28e43c2f46287fdd78d3ab97a2f1f7da5605efc9500c75b243c9793f1b427e3399c8ce749329e9bc8784690f18c27e3e941c6733f19cf00329e81643c43c8786ac8786691f14c26e3e942c6339d8ce751329e4bc9784ac9784ac8786e20e3b9838ca72319cf58329e5e643cf792f1f427e3b98a8ce775329ec1643cd5643c33c9782692f17425e379888ce762329eebc8786e27e3e944c633868ca70f19cf3d643c0bc978fa92f1b424e3b9828ce75c329e41643c55643c33c8786ac978e691f17427e379808ce742329ece643cd790f12c22e32927e3b98d8ce74e329e29643cf3c9781e21e3a920e3399f8ce709329ecbc878da91f11c46c6732319cfd3643cc3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329ecadcf024d5bbedd2d73a002e9c52905f063c8b1ce8e3a89ee5f85d83af635cafd2ea6d43abd70dad4aa1cc52d0ef6d07fa15815f59b7cc8bbf7c64563c8feabced3b108f92308a6d915b9ef47efb68507f6a68bf7d1b785cb46b8eea99debf961b757ad4a2bb94c1585deea09eb67d47e697c376c83766c5f384ce0b6b02ca3d41c228b6656e79d2fbd71341fda9a1fd6b39f0b8687f1cd533bd7fad30eaf48445772983b1bac2413d6dfb8eccaf80ed906fcc8ae7499d17d604947b9284516c6fbbe5e996803acbd4d0feb502785cb43f8eea99debf561a757ad2a2bb94c1585de9a09eb67d47e657c276f0cc9ed9c6ac78e4d98eb026a0dc53248c625bee94a75b7902ea2c5343edd84ae071d1ce3bd23ddd8ead32eaf49445772983b1baca413d6dfb8eccafb2f82e0be2d5627523b4586de1599d632dc45fb6cc4bf390d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398a994167c523dfae14d604947b9a84516c2bdcf2a4df0b7a3aa83f1519f329c8af069e950ef47154cf741ff235469d9eb6e82e6570ff5ae3a09eb67d47e6d7c076c88679551e327b9d9bc6ac7866e8bcb026a0dc0c1246b1ad74cb936ec76604f5a786dab135c0e3a29d7754cf743bb6d6a8d30c8bee5206f7afb50eea69db77647e2d6c07cfec996dcc8a67a6ce0b6b02cacd246114db6aa73cc9f4fb8d3383fa5343edd85ae071d1ce3bd23ddd8ead33ea34d3a2bb94c1585de7a09eb67d47e6d7c176c88679551e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7c2d159f1ccd279614d40b959248c625be394a76bfab9c3aca0fed4d0738775c0b336769ecc730707baa79f3bac37ea34cba2bb94c1fd6bbd837adaf61d995f0fdba1b933afca43661f1bb961f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e6286686d8503cb3755e5813506e3609a3d8d6bae5497ff76076507f6aa8dfce7ae059e7401f47f54cf7dbd960d469b645772983fbd70607f5b4ed3b32bf01b68367f6cc3666c53347e7853501e5e690308a6d9d5b9e743b3627a83f35d48e6d001e17edbca37aa6dbb18d469de65874973218ab1b1dd4d3b6efc8fc46d80e9ed933db9815cf5c9d17d604949b4bc228b6f56e79d2edd8dca0fed4503bb611785cb4f38eea996ec73619759a6bd15dca60ac6e72504fdbbe23f39b603b7866cf6c63563cf3745e5813506e1e09a3d836b8e54926a0ce3235d48e6d021e17edbca37aa6dbb1cd469de65974973218ab9b1dd4d3b6efc8fc66d80ef9c6ac78e6ebbcb026a0dc7c1246b16d74cb93debfe607f5a786f6afcdc0e3a2fd7154cff4fef58e51a7f916dda50cc6ea3b0eea69db7764fe1dd80ef9c6ac7816e8bcb026a0dc021246b16d72cb93debf1604f5a786f6af7780c745fbe3a89ee9fd6b8b51a70516dda50cc6ea1607f5b4ed3b32bf05b643be312b9e853a2fac0928b79084516c78bc58e888a7d4e029b56871b07cabf90a9d2fd1bf09f87f0530ba6a0f171a8c328f318ebcae356b67f0b433343b98be55fd2b75fe30fd8bdbab121819b657bb1c68d6dee0696f6876307d2b2dfaeafce1fa17b7575f6064d85eed81c741fbdc2d61f0a8a9a1f38d2d8ef57154cff4f9c6d6c0ae3b1e87a40c1ebbb73aa8a7ed5c42e6b7c276f0cc9ed9c6ac7806e9bcb026a0dc201246b1e175cab6f879ba250c1e3535d48e6d73ac8fa37aa6dbb17703bbeedb40772983b1faae837a16815f59b7ccbf0bdb211be65579c8ec756e1ab3e219acf3c29a8072834918c5b61578b6c7cfd32d61f0a8a9a1766cbb637d1cd533dd8eed08ecba6f07dda50cee5f3b1cd4b308fccaba657e076c876c9857e521b3d7b969cc8a6788ce0b6b02ca0d216114dbbbc0b333769ecc7840c8a3a686dab19d8ef57153cf4c3bf65e60d77d27e82e6570ff7acf413d8bc0afac5be6df83ede0993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999b59f10cd579614d40b9a1248c62db013cefc7ce9379ee803c6a6ae8b9c3fb8ef57153cfcc73875d815df7f741772983b1bacb413d8bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886e9bcb026a0dc301246b1bd073c1fc4cfd32d61f0a8a9a1e70e1f38d6c7513dd3cf1d760776dd3f00dda50cc6ea6e07f52c02bfb26e99df0ddb61b767f6cc1666c5335ce7853501e58693308a6d17f0ec899d27f3fc1479d4d4503bb6c7b13e6eea9969c7f60676ddf780ee52066375af837a16815f59b7ccef85ed900df3aa3c64f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce85a3b3e2a9d279614d40b92a1246b1ed069e0f63e7e95a9e3078d45464cca720ffa1637ddcd433f3dc615f60d7fd43d05dcae0feb5cf413d8bc0afac5be6f7c17668eeccabf290d9c7466e987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308a6d2ff07c143f4fb784c1a3a622633e05f98f1cebe3a89ee97e3b1f0776dd3f02dda50cee5f1f3ba86711f89575cbfcc7b01d3cb367b6312b9e1a9d17d60494ab216114db3ee0f9247e9e64c2e0515343edd8278ef57154cf743bf66960d7fd13d05dca60ac7eeaa09e45e057d62df39fc276c83766c5335ae7853501e54693308aed63e0711077699e528347e63f21f0ade66b75be44ffe2f6aa054686ed559a03cdda193ced0ccd0ea66f55ff093a7f98fec5ed35011819b657bb1c68d6dee0696f6876307d2b2d26eafce1fa17b7d7446064d85eed73a0d9c16c0f0fe6be7d30e3d46b7ef0342f3a889a171d44cd8bbce6549a3b38be24f1581600034e29c87f0a3cdf8e9f277d5feed32c78be0d3cdf8a9fa78ba37a96abf57e07d8e35aafd2eabb86569f1a5a95421964f8ae03fd8ac0afac5be6c59f67f6cc51cc786e2bac0928f70909a3d8be053c2eda0d55f7f3f5ba64fdadc2f4d951757e5d3c2fc17bc5adf47a8543fc154399896575657fa7d94ae0ffb2dd547df6193647ef3077b13db79379f15712e4ecde6d83f792510b17cf9bb23deeefb3f07c1d1f4f39eee7e86bafa3ba67f3ec6faf8527c6ba77897aeeb927febaa7db8fce7a5db27eb58ffefb514e35ef86fb9eb41f9d8d3a17439981657565ff03da0f5b5be17adf94737273df6c11d4b567c255a6ede633a1afb55dca7d04e5b1cda9d0bfb87f56405d5db58b51f798b05d34db6e97da9bcf254ddfa5a0cb47a49ad99e53a08e9516ee4a026e8cc75cee67b26edb33b24a434736cd705b7f64d1b1af85bb2f0137e37eddd7d0914db303edd7832cdc8308b819f7eb41868e6c9a1d68bf1e6ce11e4cc0cdb85f0f367464d3ec40fbf5100bf710026ec6fd7a88a1239b6607daaf875ab887127033eed7430d1dd9343bd07e3dccc23d8c809b71bf1e66e8c8a6d981f6ebe116eee104dc8cfbf5f0a0be8e6c9a1d68bfaeb27057117033eed755868e6c9a1d68bfaeb67057137033eed7d5868e6c9a1d68bfaeb170d7107033eed735868e6c9a1d68bf1e6de11e4dc0cdb85f37b6df3eeb7e5d6be1ae25e066dcaf6b0d1dd9343bd07e3dc1c23d81809b71bf9e60e8c8a6d981f6eb8916ee8904dc8cfbf544434736cd6cfbb5a37709b37eb7f163a7fa64c698fe380b9e0f81c7454c398a837247fd5cd27d53f7185a7d6c68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4818c586cfa45cdce75775bf40af4bd6df2a4c038fa9f3bb3776bfc9f222c35f0a38c45f319439e1d4bab2d76bb69260ffed866371e3b6dc1d7b1d32dbd28c7f99177f25509f3dc0e3e0fdfc34cf5e8367af450b7cef341edfc9916e344e96abefe31d1ad46de7dd467d50d30f62f75f5fd32243d30f1cfb4e04f5b7a730e094823cf2b87836eca89ee9b66097512753e35228d311eab9cb413d8bc0afac5be677018f4c2d80c7550c06064f60d147a64a329ea9643ca3c978ce20e3194ac6731c19cfb5643c8792f15c44c6f320194f37329e09643c23c9784e25e3b9998ce748329e2bc9782e20e32926e3e947c6338d8ca73719cf5d643c6791f10c23e3398f8ce704329eebc97812643c9790f13c4cc69324e39944c6338a8ca70319cfad643c4793f15c4dc6d39a8c2745c6731f194f4f329e73c878c691f19c4dc6339c8ce724329e1bc9780e23e36947c6731919cf23643c15643ce793f14c21e3b9938ce774329edbc878cac9788e25e3b9868ca73319cf85643c6dc8781e20e3e94ec6534bc65345c6730a19cf20329e73c9788e20e3b9828ca725194f5f329e7bc878fa90f18c21e3e944c6732619cfed643cc793f15c47c6d3968ce762329e3d643c0f91f17425e39948c6534dc6b38f8ca78c8c673019cf51643c5791f1b422e3e94fc6732f194f2f329eb1643c1dc978ee20e339918ce706329e12329e52329e4bc978a693f17421e3994cc65343c6731a19cf10329e63c8780692f11c42c633808ce77e329e1e643ce3c9784690f19c4cc6731319cfe1643cedc9782e27e32922e04904fb7f8b2901ffdf0b36f966d087606b61599f3ca796f2eab8b8b8c3feeb6e6159f7071606d4e97da84b4ae7cbbfd994d6097da5605efc9500c707243c9793f1b427e3399c8ce726329e93c9784690f18c27e3e941c6733f19cf00329e43c8780692f11c43c633848ce734329e1a329ec9643c5dc878a693f15c4ac6534ac65342c6730319cf89643c7790f17424e3194bc6d38b8ce75e329efe643cadc878ae22e3398a8c6730194f1919cf3e329e6a329e89643c5dc9781e22e3d943c67331194f5b329eebc8788e27e3b99d8ce74c329e4e643c63c878fa90f1dc43c6d3978ca72519cf15643c4790f19c4bc633888ce714329e2a329e5a329eee643c0f90f1b421e3b9908ca73319cf35643cc792f19493f1dc46c6733a19cf9d643c53c878ce27e3a920e379848ce732329e76643c8791f1dc48c6731219cf70329eb3c978c691f19c43c6d3938ce73e329e14194f6b329eabc9788e26e3b9958ca70319cf28329e49643c49329e87c9782e21e34990f15c4fc6730219cf79643cc3c878ce22e3b98b8ca73719cf34329e7e643cc5643c1790f15c49c6732419cfcd643ca792f18c24e39940c6d38d8ce741329e8bc8780e25e3b9968ce738329ea1643c6790f18c26e3994ac65349c6d3c2e0c1ffab77c3f6e8bc7c3ba818fe3f49772e6fa7d72565e419b1ba57f19e6153f5dde9a8beef0575530ae677427d85fd3de079cf11cffb068fe9bb04f295a0d90ec3a618b73b62dc6130cafc766014fd7600cf0e473c3b0d1ed37709e4fb8266ef1a36c5b8cd11e3bb06a3cc6f0346d1ef5de079d711cf7683c7f45d02f941a0d956c3a618b73862dc6a30cafc166014fdb602cf56473cdb0c1ed37709e4078366ef1836c5b8d911e33b06a3cc6f0646d1ef1de079c711cf1683c7f45d02f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37709e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf25901f069aad336c8a71ad23c67506a3ccaf0546d16f1df0ac73c4b3dee0317d97407e3868b6c6b029c6d58e18d7188c32bf1a1845bf35c0b3c611cf5a83c7f45d02f92ad06c9561538c2b1d31ae3218657e25308a7eab806795239ed5068fe9bb04f2d5a0d90ac3a618973b625c6130cafc726014fd5600cf0a473c2b0d1ed37709e46b40b3b70d9b627ccb11e3db06a3ccbf058ca2dfdbc0f3b6239ee5068fe9bb04f2a341b365864d312e75c4b8cc6094f9a5c028fa2d039e658e78de32784cdf2590af05cd961836c5b8d811e3128351e61703a3e8b704789638e2596af098be4b203f01347bd3b029c6458e18df3418657e11308a7e6f02cf9b8e78161b3ca6ef12c84f04cdde306c8af175478c6f188c32ff3a308a7e6f00cf1b8e7816193ca6ef12c8df0836e1ed03b6d774be37d85ed5f95e607b45e77b82ed659def01b69774be3bd85ed4f96e607b41e7bb82ed799d4f82ed399def02b66775be1fd89ed1f9fe605ba8f329b02dd0f901609baff317826d9ece5f04b6b93a7f31d8e6e8fc25609badf397826d96ce5f06b6993a7f39d866e8fc15607b5ae7af04db533a7f15d89ed4f9abc1f684ce0f04dbe33a7f0dd81ed3f96bc1f6a8ce5f07b6bb75fe7ab0dda2f33780ed639dbf096c9fe8fccd60fb54e76f05dbb774fe36b07d5be76f07db7774fe0eb07d57e74780ed7b3a3f126cdfd7f95160fb81cedf09b61feafc18b0fd48e7ef02db8f757e2cd87ea2f3e3c0f6539d1f0fb69fe9fc24b0fd5ce72783ed173a3f056cbfd4f9a960fb95cedf03b6cf747e1ad87eadf3f782ed373a7f1fd87eabf3f783ed773aff00d87eaff30f82ed739d7f086c5fe8fcc360fb83ce4f07db973aff08d8fea8f3d2aea976f64f3a5f16c4dbce7e15d44d65e05bfca9327fd6f9d6461959b618ca9ca53b14aa671cea5ba6d20e4bbbac6cd20ebf063669875f059bb4c3af804ddae197c126edf04b609376f845b0493bfc02d8a41d7e1e6cd20e3f073669879f059bb4c3cf802da5f30bc126edf002b0493b3c1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493bfc34d8a41d7e0a6cd20e3f093669879f009bb4c38f834ddae1c7c026edf0a3609376f86eb0493b7c0bd8647ff90a6cd2367f0c36699b3f019bb4cd9f824ddae66f814ddae66f834ddae6ef804ddae6ef824ddae6ef814ddae6ef834ddae61f804ddae61f824ddae61f814ddae61f836d9cceff046cd236ff146cd236ff0c6cd236ff1c6cd236ff026cd236ff126cd236ff0a6cd2367f0636699b7f0d36699b7f0336699b7f0b36699b7f0736699b7f0f36699b3f079bb4cd5f804ddae63f80ed119d97b6ba0dd8e459b19acabfe184e3f0b4005fc2920ae26dfb714a411eeb2e532519cf1c329ed1643c2f91f19c41c633948ce738329e43c978de20e39940c6b3908c671919cf52329ed7c9784e25e3d940c6b39e8ce748329ef7c8787692f15c40c6534cc6338b8ce705329eb3c8788691f19c47c67302194f828c673e19cf12329ec5643caf92f17420e35947c6b3968ce768329e1d643cdbc9785a93f17c45c633838ce71c329ee7c878ce26e3194ec6731219cf61643cedc8782ac878ce27e3994bc6f32619cf22329e97c9784e27e35943c6b39a8ca79c8ce758329e77c978b691f17426e36943c6f314194f2d19cf33643c55643ca790f10c22e339978ce708329e96643c7dc9786e21e3994dc6f322194f27329e33c9785691f1ac24e3f9928ce778329ead643c5bc878da92f1ec21e39948c6b3808ca79a8ce735329e7d643c65643c83c9788e22e36945c6f33119cf4c329ee7c9785690f12c27e339918ce71d329ecd643c25643ca5643cf3c8786ac8785e21e3398d8c670819cf31643c8790f13c4dc6f32c19cfdb643c6f91f19c4cc6b3898c672319cfe1643cedc9787691f1bc4fc65344c093008e006cf2ff966093eff0ec03db173abf076cf20d9f37c0f6b9ce3f02b6872cb616163e61980e367957f60bb0c9fd9987c126ef4c7c0e36396f10ff6a7e6587fdf95bc032e2a7a5851ffd7d6ee1923c6e6f592615c4bbbdd1572ab07ff3aec8603cd83cef93f1ec22e3694fc6733819cf46329e4d643c2793f1bc45c6f33619cfb3643c4f93f11c42c6730c19cf10329ed3c8785e21e3a921e39947c6534ac65342c6b3998ce71d329e13c9789693f1ac20e3799e8c672619cfc7643cadc8788e22e3194cc65346c6b38f8ce735329e6a329e05643c13c978f690f1b425e3d942c6b3958ce778329e2fc9785692f1ac22e339938ca71319cf8b643cb3c9786e21e3e94bc6d3928ce708329e73c9780691f19c42c65345c6f30c194f2d19cf53643c6dc8783a93f16c23e379978ce758329e72329ed5643c6bc8784e27e379998c671119cf9b643c73c978ce27e3a920e36947c6731819cf49643cc3c978ce26e3798e8ce71c329e19643c5f91f1b426e3d94ec6b3838ce768329eb5643cebc8783a90f1bc4ac6b3988c670919cf7c329e0419cf09643ce791f10c23e3398b8ce705329e59643cc5643c1790f1ec24e3798f8ce748329ef5643c1bc8784e25e3799d8c672919cf32329e85643c13c878de20e339948ce738329ea1643c6790f1bc44c6339a8c670e194f25194f0b0bcf3e473cf2ad1859b7ccef6be6be771abe771688efed86efed05e27b9be17b5b81f8de62f8de5220be371bbe371788ef8d86ef8d05e27bbde17b7d81f85e6bf85e5b20be571bbe571788ef9586ef9505e27bb9e17b7981f87ecbf0fd5681f85e6af85e5a20be171bbe171788ef4586ef4505e29bf9fa5b7d274cfa2aefd2bf09f87f0530bee188719fc128f36f00a3d8f07bd4158e78a2aedd2b087c2b2de45e963cf34cc0ff2b81d1554c55188c326f8ba99dc053e98827ea9e4325816fa585bc8b2d7d2a13f07f1c7fd9554c551a8c326f8ba9edc0d3d7114fd4bd92be04be9516f2eeb3bcf39780ffe378ebae62aaafc128f3b698da063c831cf144dde31944e05b6921df0a936fd224e0ff383ea3ab981a6430cabc2da670fcdcc18e78a2ee4d0d26f0adb4906fedca372f13f07f1cbfc9554c0d361865de1653387edc10473c51f7d48610f8565ac8b360f9467b02fe3f14185dc5d4108351e66d3185e3dd0c75c413752f7028816fa5c5309d973e5609f8ff3060741553430d4699b7c5d47ae019e68827ea1ee63002df4a8be13a2fef7024e0ffc381d1554c0d331865de16536b8167b8239ea87bafc3097c2b2daa747e8dfe4dc0ffab80d1554c0d371865de1653ab81a7ca114fd43de32a02df4a8b6a9d976fce25e0ff38fefb70478c5506a3cc0f0746b1ad049e6a473c51f7baab097c2b2de4dbfe2bf46f02fe8fe3b1ba8aa96a8351e66d3185e341d738e289ba475f43e05b69315ae7654c9804fc7f3430ba8aa91a8351e66d3185e3578e76c413f56c6134816fa5857c9b6b99fe4dc0ff6b81d1554c8d361865de16534b81a7d611cf628367b1458b83e55b69217db997e8df04fc7f0230ba8aa95a8351e66d31b518782638e2897a963381c0b7d242beadfda6fe4dc0ff2702a3ab989a6030cabc2da61601cf44473c51cfa026e6c077d4f3945cf88e7a36900bdf51f7b973e13bea9e6d2e7c47dd7fcc85efa87b69b9f01d755f2817bea3ee71e4c277d4f57a2e7c475d7be6c277d475542e7c475d13e4c277d4f96d2e7c479dabe5c277d479876fcf7d7b1eb7ef8379ee50a8edf9c13c861ecc6389bf36f0d706b9f2ed8f25feda2057be0bf5dac0b7e7b96fcfe5faab2888be1e7bcb91efa5866f99c7e72c4b1df95e6cf896797c66b0d891ef45866f99c7fbdf8b1cf92e357ccbfca21cf86e67f86e9743dfed0ddfed2dbe1d6cef6422a87ffd2d0c38a5208f31f0a6032d1cd5b35cad77895ed7d731aed776dfc6dc5f4aa1cc12d0cf75db21eb36db8e7c64c6b8288acf7779027cc877c9944d9e1fbf063669f75f059bf40b78056c726c7a196cf24cea25b0c933ab17c1365ae73f069b3c3bc63efbf2fc7f1bd8aa741efb8a0fd7f92d6093be54d84759fac36d069bf469c4beb1d22f7523d8a46f31f6c994fee1ebc1267dfcb12fa0bca7b1166cf2ae0df64193f7a556836d8fce63df27f90ecd4ab04dd7f91560fb83ce2f07db833a7f0bd87eaff35f81ed773abf086c0fe8fc9b60fbadce2f01dbfd3aff02d87ea3f3cf83ed3e9d7f0e6cf7ea3cbecbf66b9d7f1f6c9fe93cbe43354de77782ed573a8fefeedca3f3dbc1f64b9d7f166c5375fe19b04dd1f98560fb85ce2f00dbcf757e3ed826ebfc3cb0fd4ce7e7826d92cecf01db4f757e36d8c6ebfc2cb0fd44e767826d9ccecf00db589d7f1a6c3fd6f9a7c0f6239dff126c77e9fc62b0b5d0f9a560933123b19f4ab1cebf05b6563a8ffd8fe4fbfe13c17688ce4f005b1b9daf059b7c1b6e34d8643ce81ab02574be1a6c253a5f0536393f1b0e3619ff6418d8e45c6a28d80ed7f9216093f39ec16093f12c07814dbe41da176c47e97c25d8e4dbfa15603b46e7f7814dc61c7b036cf2ddba3d6093b1981f069b7caf7a3ad84ed4f93f804dc66179106c27ebfcefc1768aceff0e6cf20dcf07c056a6f3bf055b079dbf1f6ca7e9fc6fc0266364dd07b63374fe5eb0c9d8c1bf069b7ceff933b075d4f969603b5be77f0536194be41eb0c9f8a0bf045b279d9f0a36f90ef714b09daff3bf009b8cf7f773b0c9378627834dc675fb19d8bae8fc24b02575fea760ebaaf3e3c1d64de77f02b6ee3a3f0e6c3d747e2cd87aeafc8fc1d64be77f04b6de3a2fed8cda9fd57ebe57cfa782f8cecb94bf0f83fa5343d706c2803c719e6b97020ffada1d7bdd93e9f37ad9ef5be8f54a0ced06dfbb62f79db9a6f840afab58af7797e1bb18ca9cad1b07b59c1cf35beae5f618cbe17d2c59b72c7301d8df37d6dd4ed7f70347f5dd65300937ea2065ced34cead8f8039d6f03cbc4c896be3e96580b40439c52901706375a25cbf1bcb7313c1f00cfeed87932d7eb2e6202f7adb8afd7cdfbb866ac9542995da0dffb0ef4c37d5dd62df3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333fb3e2d9abf3f85c59caed256114db6ee071719f1f9fc3cafad5739df74fadf3bb3b76bff59fefb5d2eb2d37ea5c0c65be86674e7b74be04fe2fdb2d6a5b3a784ed8e0b6147f25501f7c16b4d711cf6e8367b7450bc997c5e63b39d28dc6c972d597453d63df63e8bad7a2a9abfd75b75e5791a129eeaf1f1a3cf86cb404783fd2bf0958cf47500707fb78837121fe705fda0d36c97f088c2eb6331e4ba43d90e7e1f86c5acafcca782e1effb64f96bb6c37de833aa582fde3bb18cafc0edabecf751efb86ec05ddfe61f9bf4c0d3da716fd549d77c45fe7f4f6dd0e9c29f083bedf05d6987cd77b87a64827f123f662c8ff1dfa734839d143b416761caf1cd9cde53e34962b85323b2df54f05f1d67f87c1b3c36056dbe44b88b37fc0f1df559bb43342a30b402329b31b34dae38867b7c1231ce24f9591eddfda2823cb164399ff056d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f107c068d651c5c7c063ea7877c7ce9b5ffdbf0e29cbfc62bb1e57ff2f59773bbdac7004c6facb61fdc2d53a883eb6fccff62dab5bbfcbfe657b8c3a0b0bea2c65da95657e559c5daaf3d99ceb1facebb6a873fd9d0e781241fd6b6f3535747cc763cc7bf07f2953fecda62e8eea596e3b76bd6fd4a914ca74847a3a388f69f05de01de0dbc536472de41c6a97a1453194e95096f995b6234a47bc56fd202775495acf07cb2d7591321dcbeaead206ec7132b9dc6eef429dd47a775bea2a65ce2babd3a5b3ce27603be17d93be96ffcbd4507b8063f16c8dbfcee9edbb053853e0077dbf03ac31f9aef72d1039df173f622f867c65595d5929277a88d6c2aef61179e70fd9cde57619cb9542996d96faa78278ebbfd5e0d96a30ab6dd2a5ac2e2f71e4b2dddc16a15139682465f0feb11cdbf1bd3bdb717fb723eea8e3fe6e6034db4d3c7771c9b6c76033efa1dace07a50c9e934999abca32bfaa9d4d58ca9af7865ddcc7c4775003a84760d455268c0107d786ddf0da49da29f1d319ecbb755e74ee6c68570c650695657e1d9e775bef5d9ad777784d21dce6be85ef7e0c29abe3c6b11377ebdf12b07da27f1d5da775b3dd33140edb3dc3e16575ecb8ac707d6ca98b798ddc22d8ff9efad74659bcefd6d07266de1c8752e9fb8951cee607af79627b57a34b793932b508ecf70b3e34d88b82fdc7dc94fd0063cebc8fd2d9580fde47a92dcbfc4a9b649655dbfedf8faad347b6a36887ed09c6e487c098d2f9f26f3675b1d55fe6c59f62fcc8a8839bb62bf3be5236f781f7008f8bb6dd511b5d8ec7d836b1adb77795edf8ffa1a1550e9fd75a8ff9e633f736463e1edfc96adbfd279b16bb2c3cae9ea34469b1cbe23b3e2d7a8cb41d3f6c5ae4b2ef439416ef5b7cc7a8450ddef76c488bf72c3c2eee4535a4c57b16dff169d1b3bca1e71aa8c54e0b8fab7b0f515a88bf6c99df27606e63e4e3f1ddadca769fcca6c50e0b8fabebe6282d76587cc7a745971e788fae212db65b78e2bf3fd7b016db2dbee3d3a2576fbc87d79016ef5a785c3dd38dd2e25d8bef18e36294ed5e8e4d8b6d169e6d39d6629bc5778ce7873d6cf7da6c5a6cb5f038b8efdaa0165b2dbe63d46204de776d488b2d169e2d39d6628bc5777c5a5475b7dd13b669f18e85c7d53de1282ddeb1f88e4f8b11bd94efcd8dd062b38567738eb5d86cf11de335543a2e3635428b4d169e4d39d66293c5777c5a54a7cfb53636428b8d169e8d39d662a3c5777c5a94a78fa91b1aa1c5060bcf861c6bb1c1e23bc6b8485f4fae6f8416eb2d3ceb73acc57a8bef188f23e9b858d7082dd65978d6e5588b7516dff1695193beffb4b6115aacb5f0accdb1166b2dbe63bce7928e8b358dd0628d85674d8eb55863f11d9f165dd3c7d4d58dd062b58567758eb5586df11d9f16a3d2cfc45635428b55169e5539d66295c5778ce79de9f6626523b45869e15999632d565a7cc778de99be7fb1a2115aacb0f0acc8b1162b2cbe636c3bd3e79dcb1ba1c5720bcff21c6bb1dce23bc6f3ceb4166f37428bb72d3c6fe7588bb72dbe633cef4c1f47de6a84166f59785c8d8112a5c55b16df31c645baed5cd6082d96597896e5588b6516df31ded74ab79d4b1ba1c5520b8fabf11aa2b4586af11de3f548fa1edf924668b1c4c2b324c75a2cb1f88ef15951fa1c7c7123b4586ce1599c632d1683ef3db1fbcef4e7161fd217eb7c438b6228734a87ccaff4c58ad251d681fdcab02e6fc65e974cbfb24511757913ea2265ce80bab4099c8c51d4cd515dd331f306d449adf7234b5da5cc391dea74e9a4f309d8261f836e7d2cff97a9c8984f415ef453757e2dfe3aa763f555e04c811ff4fd0ab0c6e4bb0bfa2ed249fc88bd18f2bd3bd4959572a287682dec6a1f795de791dd5c6eb1b15c299479dd52ff54106ffd5f33785e3398d3ef3d409c491cb969bb324caf4768743e682465b0cfde478e78cc3e84c221fe5419d9fead8d32d88752ca5c086d14f62b957a2682fdfb4d3a6acbba20bbac5be6c55f29d8f600a35947151f9f41df4f192b42c69150361917a22baca7a7615375ede5a8aee24bd62df3bd8051c6a9e8997bc66463197b188c8aa78f03cd70ec0d991a3a5ef4019ede0e781cd5337d1caa30ead4cba8532994c1771b2b1cd4b308fccaba65be027cbbd8e6a8851c93cf31b4288632c38df3c7281d651d2a7e7b5aead2cf715d64ddd22ef5cb81ef4ac37777c37722a8bf9d83a0e1fdab1298fb3a6056ebed1fff7acbf1bc4d624afc74873a0d000de2aa13ae4bcef30618da16437e2a9ce74939292bc72f6157b12cdb12d9cde5fa18cb9542997e96faa78278ebdfdfe0e96f30ab6d72179cdb39d81fd231d0cfe090f9eea05dff08edfa817652068f7f3d1c69d7d7e091f91ec023e7381560937305e14fc0ffbbe680db6cf72a2cdc62c371e27a5818bbc7cf983ed7e96130ca7c7760145b5fe0a974a499b9adcf31f4c1e3726ba38c2c5b0c6566c1b1316129abf6bb8e4575f56aa9edb1bd3ba6dbf4d60ef4c2711a03d02730340c402fa9672b073c6d83bab11a274fa99d34e2ce51378cca3c7a14b46203137f8b2cd5680136ccb7b4d882a0fe9094c5609321295b81ad85210b0e8529e565483b1772a11eb2ee6283b30db0c4e91b87f394a9a1d03904785c84b20a1d19d25387ce2d93c64c1985f1d1cae06c4aeca8ffb56ca05cd4ba5c6d07739f48c1bc1983c58efcb784faa6605efca96d53aaf313468cbc7bc0a43ba78e1b357eca6414cadcb1315f14d4df00e66f94e0ae763a0c00ac30360ead8c7a618321ff930dd3367ece6e3866aea94d00fe646a0bba1dea4037b57e19fb76e488b163af9b5a3576ccc84ba78e1f39654ced78dc9a6d0ce5a2b6b4fcbf35d86c4d3c965513365bb8ec21169b6dc25186db804d8e5c87824d78da82ad25e4a5bcb9659c846b4758bfec52ea7f4a9c56bae287047521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e21c80c1dac860a3e39c80c05acbe7651166486f63d2dc80cdd7b4690199af72ce0fb36309f1d644ebbd4d0ba9d82ccd0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e9a73aed549717eaf685ba95a54ee9d4e9b23a1554a76fea72a4bfd67a40982e0cd34561ba384c9784e9d2305d16a6cbc3744598ae0cd35561ba3a4c03c3744d98ae0dd37561ba3e4c3784e9c630dd14648677be39c80cbfae867fbe35c80c0d7d5b901936faf62033a4f41d4166b8e911416628ea91416698ea51416608eb3b83ccf0d66382cc30b9770799a176c70599e17ad570d86a986c357cb61ae6570d09ac861456430dab6189d510c66a08643534f2fd4166c8653564f3434166d8e7e9617a244c8f86e9b1303d1ea627c2f46490191e5c0d1b3e23c80c33ae861f9f1d64862b9f1b64863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f314c2f85e9e520f348423d8a518f28d4ed7ff5184cdda27e33c8dc3a5f12641e71ab47feaa0b84ea12a2bac8ac08325da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aa770799dbe27b83cca352753b5c3d1a50b7ccd5edfb4fc3f4ad201393df09d377c3f4bd307d3f4c3f08d30f83ccb0c66ab863355cb21a5a590dc3ac866c564339aba1a0d5b0d19f0599a1a7d5d0d5bf0d324362ff3e4c9f87e98b2033bcf69761fa6398be0ad39fc2f4e730fd254c7f0dd3dfc2f42f61fad730fd5b98fe1ea67f84e99f41dd30dbd8909ca05b1f7d05138c983265d4b80953caa6d4968d9b3a76ca980963ef2b9b3666cae8b2da7b464daa195b3b0d17feb65e58c6081f3069d288fbcac68caf1e756f59edd42965b5356555b553c757d73b88ff452f74d2fe1e475457473bfbcf6f42fa7f9be8f450dd2ecae8eb57345cb792964d10e488a62cd4a365d32a34491fc1e452f7c6cc7970d9e4b1b553cacacbc6877fc3036fedb451d59dcbf07f934391274f299b3c65c4a4296535936ac79575e98ceb7db86d132af15f6dddc09c7942d3c4e9a8bfb3d4a410fbe5a94d50e03f4e6d1a69ebb26f40dab6ac694ecbca9a50c3b39ab2d0954d24bca92c5296c953aba64c1a31724af4c2b77e9385ef684a35c737b19a27776882b3d39bb2d0800e4d23bca329ce6666e12cf86f5a25cf6384550600", + "bytecode": "0x1f8b08000000000000ffed9d779815c5baee7b604074cd8898b3830915816118f200833967141111866100058628823991a3398224c95940411110c3ce3927756f773c61ff75ef39e7deebb95d6bd577e69da27a316bec5abc6b56f5f3d4acea6faafbfbd5db5f57a7eaae7f06415010a4a6e6613a3f387492ff57eadfd26f36758e715da52e390b7284b3598e7036cf11cec21ce16c91239c2d7384f3a81ce16c95239c47c7c8a9d89a05f5a7b8798f71a06bdc8c891cd3b42807342dce314d8fcd014d5b07b9d1461d97239c6d7284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce13c234738cfcc11ceb37284f3ec1ce13c2747384b7284b36d8e709e9b239ce7e508e7f939c279418e705e1823677be06ca77f2fd2bf17ebdf4bf4af94bd54ff76d0bf1d751d0bf57c27c51526f590a6ccf85f97309587a96b98ba19ffeb1ea61e61ea19a65efa7f25fa7fbdc35411a63e61ea1ba67e5a83fe61ba2c4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e300d08d39d61ba2b4c03c374779806192cf784697098ee0dd39030dd17a6a1611a16a6aa300d0f5375984684a9264c23c3342a4ca3c3747f981e08d398308d0dd3b830d586697c9826846962982685697298a684e9c1304d0dd343619a16a6e986660f87e991303d1aa6c70ccec7c3f444989e0cd353617a3a4ccf84e9d930cd08d3cc30cd0ad3ec30cd09d3dc30cd0bd3fc302d08d3c2302d0ad3e2303d17a6e7c3f442985e0cd34b617a394caf84e9d530bd16a6d7c3f44698de0cd312cd223bc2d230bd15a665615a1ea615615a19a655617a3b4cabc3b4264c6bc3b42e4cebc3b4214c1bc3b4294c9bc3b4254c5bc3b42d4cdbc3f44e9876846967987685e9dd30bd17a6dd61da13a6f7c3f44198f686e9c330ed0bd3fe301d08d347613a18a68fc3f449983e0dd36761fa5698be1da6ef84e9bb61fa5e98be6f68fe8330fd304c3f0ad38fb5ed27faf7a7baacdcbffb59987eaef3bfd0bfbfd4bfbfd2bfbf3696f94d987e6bd87e17a6df1bb63f84e9739dff42ff7ea97fffa87fffa47fbfd2bf7fd6bf7fd1bf7fd5bf7fd3bf7fd7bfffd0bfffa27fff55fffe9bfefd77fdfbcf30ed699bcab70aeaa6ca20a636aabc26f9ec47c46f17d49f9416cdf5ffe4b744db0bf5bcfc8a762df47c0bc3de52cfb734d6d34acfb732ec6df47c1bc37e829e3fc1b09fa4e74f32eca7e8f9530cfbf97afe7cb02702b837acedcad65c9b0ac026f1da0c6c2db4ad39d85acaeac07694b6b5009b6cdf96603b5adb8e02db31dad60a6c096d3b5ab40c5391b6550671c54ae930b5dee2b8d7ab9f971d1b3fef70b5ded68e788f8b9f77845a6f1b07bc2a3e8ed7eb3a0ee2e6046d6b03b613b5ed78b09da46d2780ed646d3b116ca768db49603b55db4e06db69da760ad84ed7b653c17686b69d06b633b5ed74b09da56d6780ed6c6d3b136ce768db59602bd1b6b3c1a69bdce01cb09dab6d25603b4fdbda82ed7c6d3b176c1768db7960bb50dbce079bb4bf17804dce172fd436d5761c5d00cb68bbb45bc965a4cd06dbc5d25e83ed1269abc1d65eda69b05d0abec5d601da1ab175d43669b7d4ff7ae97c6510d77e5256a3d6db3beef5866b56ebed13ff7a93cf1cfb06755a57829fdea0553f9d8fb15f5367f45da093f8117b21e4af83b2524ef490638fb0ab634c85cef74bb35c2f63b962285361a97f65106ffdfb183c7d0ce616907713b35dbaf8986df09471cc0e84b266ecc97950538cd91b81c341cc76f731dbe029e398ad81b266ecc9b970538cd97b80c341cc56b989d9b2521fb3a9fb6641608f3db91e6a8a313b1a38e28fd9ae3e661b3e651cb34f415933f6e49ab829c6ec54e0883f66bb57f97383064f19c7ec22286bc69edc9f698a31fb2c703888d91adfce3678ca386697405933f6e45e61538cd9e78123fe98ede92866bbf8980d52cf4083c01e7b72dfba29c6ec32e0883f6687fbfbb30d9f328ed9dd50d68c3d7986d2146376b3ceabe70c3fd1cf19ce04db4fb5ed2ce08d3fb6abbb3a8aed321fdba9be2141608f51799ed71463fb439d5771fc0be88f20b65f6a5b5bb0fd4adbce05dbafb5ed3ca897837da0caef030d9e32de077e0b65cd589667cb4d711ff811703888d96a1fb30d9e328ed9bf435933f6a49f43538cd93f00878398adf131dbe029e398fd0f286bc6de453adf146356fa9aaaf3852ff4f9c22560fb52dbda83ed8fda7629d8fea46d1dc0f695b67504db9fb5ad13d8fea26da560fbabb67506dbdfb4ad0c6c7fd7b62e60fb87b69583ed5fb4ad2bd8fe55dbba81eddfb4ad3bd8fe5ddb7a80ed9fdad653dbd4f32ee97b25e7adad80bf328877db4abf4b59b7cc77ce82efd686efd659f4ddc6f0ddc6e2bbcc81ef04f890a9c098af847c995b9ed262e0415fe5f1fbeaa2eade256878ddcb81a7ab83ba27c0474378ba024fb7f87992fd7fbbc7bfdee436ee62689a005f5da05e3d1cd4ab007cc9ba655efc15830ddbd61e16c69ef1339615802f59b7ccf70446b1615b2fef5cc9fea38e87ed0aea781dec4bc97322f127df2d138e72b04b995bdbd6b1b5d76c45f07f3cee75336c8ee2321917e24bd62df3e2af08ead32dfb8c650d65ec6a30ba6a230ac097acdbfbaedb0e92c7e3b8836b1d6b9b26be7b67c1774fc377b9e11bdb4e99d21ddb7a0273ecd79cfad85611ff7a4bf1fa44ae0dc50f9e3fe0355c5c7542df726d287ec45e08f99b0aeaca4a39d143da616157b12cdb12d9cde57a18cb154399de96fa5706f1d6bfc2e0a93098d536b91c8e850ef687640cf4363864be1cb4ab88d0ae376827652e02ed5cb567bd0c1e99ef063cd28e75071e57d744513cd9b81e3b9c6f3c87c5eb67f93f9e07b8da5e9d0d4699b76daf9ec0683b5771703d93f65ca52b308aad17f07471a459d476ed42e2db41ac24db23f121e7e6b2ff7603bb94e9a95fa8536de5fdd056ba88118c47991a7acd1bff762a4b5e8377cd8007b79d83ebaace8ee2b114efdf7c1dc41b6b66bbd4d5d02aea1e8fabb6bc8bc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae1b09a3d9ffcdd57dfee4f70ff5ba64fdeab9ceff71da1facac14fbc7483f884b8c3a174299e2667565ff1bfa8399cfa9b08f6437b7da25b725f6c7ac8479f1877dad705b32f4772a89cd77d97057cfdbd437c0d47734cdbe9fdd2c9abae8ff8c9a16189a627ffc4b0d1e15a715cdebd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd2ca8df7ee071c655ff1d69abe579796fc377219439a359ddb691be5532c670176339ecf723eb96652e017b85b1eed67a59e16861acbf3b2c2b65ce8636757fb33acd1cb4956599f65dc7e7e6f11f8753cff1bb64c0d319785cb4338ece374a711f88fb39bed93fcd761e2365b06f9f837e9569fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43f279867cab4cd69ffc5e70b33abfae9fc3c933a7f6469df1ddd17f36ab2bbb5de78b8243fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77ea39be8bb121e4397e1743d7728ba6aef6577cc68a9ae2fedad5e0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b675e06adb9795ba6c37f0bb2995c1a1f18ddf53f921b47d3fd679ecc3817d47beb0fc5fa674cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb33aeab40a7fe86068590ffbc595d59292765456b6157fb887c0306d9cde5ba1acb154399be96fa5706f1d6dffcd66a3f83596d939f419c7d01c77f576d52df088d2e018da40c9e07b9ea9367b69166ff46ecb7d7d22883e72c52e66fd04645f51fb5f53974751c8bea73683b37ee0c8c661dcd7e9ef9de4feb3fa1bd88bb9fd67f420c613fadc0587f7b58bf70b50ca28f2d52e6ff19eb37cfc96519ec07f63ffd9fe07b2e653a9fc939f991babeb29d93e372517557ccf81db4ca189931269005cf13a4cc315a6bd9661511dc3d2dcb16472c2b5a99df0a2b0a0ed5cfcd77d652fb7c3fa32e12d7f80d72297302d4c5cd794bea1cd0d537e52aa14e2a5f66a9ab943915f6b5d3753e01db09f7db8b2dff9729dd39208ee17e59fc754e6edfcb81b312fca0ef2b803526df9dd1b79c038a1fb11742fea2e67565a59ce8215a0bbbda47e43c0ad9cde57a1bcb154399fe96fa5706f1d6ff3283e73283596d93b320ce2e867ee8aedaeafe111ab5078da40cde53b47d07d4768c71d5b73fea1853068c66bb89c749976ce67b42e67d35db3982949165f11ca13bb4b3094b59f37ea11c2fe3ec378cef4a7407bff8ae84ab6f37f702dd2a611ecf0b8ea46f17dfb155fea2c64ce89505df51632664c3771bc3779b2cfaf69a7bcd993477300641f2fd33fc66a99ad29d97e2b804b25c33607431964322a8ffedf1c331e2f80eb25c736074717cc8f4dbe7dd8151962b044617ef96e2f81b0d61c46f0ce3715e181d7c2bb67363bf158bf7f45a0223d33b9bf86cea286074710fb5b1efeae1f97c2bf875352e51970c18f17c5e963b1a185ddc1bc767830d61c4eb2259ee186074f10c2bd3f19df0dbf3786fd92563ba63bbe3be286599de7ba970cb93f65c037d3b18d730a905de673c9c167ddcf2a43df741df0eeefb25b5c071060fa7053e1b7431ee6122a8ff1cee703cf8fc52963b1e182b1d31f6cb80b11218ffe75e3130f677c4589901637f6014fb89c0e8e0fe6b92b17f068c789f52963b09182f77c47859068c9703a32c773230bab8979a00bf0d61bc021865b95380f14a478c5764c0782530ca72a702e3558e18afcc80f12a6094e54e03c6ab1d315e9501e3d5c028cb9d0e8cd73862bc3a03c66b8051963b0318af75c4784d068cd702a32c7726305ee788f1da0c18af034659ee2c60bcde11e37519305e0f8cb2dcd9c0788323c6eb3360bc011865b97380f146478c3764c0782330ca7225c0789323c61b3360bc091865b9b6c078b323c69b3260bc191865b97381f116478c3767c0780b30ca72e701e3ad8e186fc980f1566094e5ce07c6db1c31de9a01e36dc028cb5d008cb73b62bc2d03c6db815196bb1018ef70c4787b068c7700e3ed16c6018e18efc880710030ca729702e39df13326afa50764c07827f0dc153f4f52b33b33e0b9cb2d4ff2bb7a775a7cdd1dbfafe4b6181834bcee7703cfa0f87992dbe2ee0c7884a1189643cdee899f31a9d9a00c18ef019ec1f1f32435bb27039ec1a0d93d16cdee8d9f31a9d9e00c18ef059e21f1f32435bb37039e21a0d9bd16cdee8b9f31a9d9900c18ef039ea1f1f32435bb2f039ea1419d66f759341b163f6352b3a119300e039eaaf879929a0dcb80a70a341b66d16c78fc8c49cdaa32601c0e3cd5f1f324351b9e014f356836dca2d988f819939a5567c03802786ae2e7496a3622039e1ad06c8445b391f1332635abc9807124f08c8a9f27a9d9c80c78468166232d9a8d8e9f31a9d9a80c184703cffdf1f324351b9d01cffda0d9688b660f3862bc3f03c6072c3c717f27fb7e8bafb18eea3e266878dd85a11896c37e12e31c318ecd80711c30ca72d84fa2d611e3b80c186b8151964b38664cd74fa2167c8f8fdf77b25daa0d1aaecf78b73c69fb49a0ef098eb4181f345c8b096e79d2f69340df131d69312168b81613816792032d12e0a3213cc2500ccb613f89c98e182765c03819186539ec2731c511e3e40c18a700a32c87fd241e74c4382503c607815196c37e12531d313e9801e3546094e5b09fc4438e18a766c0f81030ca72d84f629a23c68732609c068cb21cf69398ee88715a068cd3815196c37e120f3b629c9e01e3c3c028cb613f89471c313e9c01e323c028cb613f89471d313e9201e3a3c028cb613f89c71c313e9a01e363c028cb613f89c71d313e9601e3e3c028cb613f89271c313e9e01e313c028cb613f89271d313e9101e393c028cb3de09831ddf5cb934ddc77d4b54a53f71d755dd2d47dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993efa71cf84e800f990a8cf94ac80b43312cf780676cd28cc853121f4f29d61d7d3d4d50f7a72d3c058eea8ebe9e21a8bb30e41ae35339c088fbb8d7b1f18c8e752c6b2ca3e279d611cf3319f03c0b3c331cf13c9b01cf0ce099193f4f32a66664c0230cc5b0dc0339c0f8540e307a1dbd8e4c8c5ec7fcd1d1337a46cfe8198f04632eb4e19e3127e2b1acb18c8a6756fc3c49cd6666c0330b3493e5eeca01c6a77380f129b78c658d65543cb3e3e7496a362b039ed9a0992c77975bc6b2c6322a9e39f1f324359b9d01cf1cd06cb64533078c658d65543c73e3e7496a3627039eb9a0d91c8b660e18cb1acba878e6c5cf93d46c6e063cf340b3b916cd1c3096359651f1cc8f9f27a9d9bc0c78e68366f32c9a39602c6b2ca3e259103f4f52b3f919f02c00cde65b3473c058d65846c5b3307e9ea4660b32e059089a2db068e680b1acb18c8a6751fc3c49cd1666c0b308345b68d18c95f1811c607c2a07181deb58d65846c5b3d811cfa20c781603cf738e781667c0f31cf03c1f3f4f32a69ecb8047188a61b9077280f1a91c60f43a7a1d9918bd8ef9a3a367f48c9e3133c6a77380d16f6bcfc8cae8e0fa2aedbb48cf3571df51ef223575df51ef223575df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f771cee4fb85f87d9765fa8d991780c7c5376f1cd5b354adf745bdaeaf63d44f69f592a1d5738656c550e645d0ef2507fa15805f59b7cc8bbf4c99db11303bf25d766cb88ea3a1fee2e329430fe5ff6547758f6aeb5f6ee2bea3dafaa6ee3baaad6feabe7d9cfb38cf07df3ece7d9ce7836f1fe73ece597c63be455077de2edf3f55eb7845e70bf5bc947f1aec52e6e1a352bfad03bf0fb9f0edf7217facc807df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b738c870959e0090c9e200dcf2c329e6a329e81643cd793f1f423e3594cc6f310194f0f329e31643cf791f1dc46c6f32419cf55643c8f93f17426e39944c6339b8ca7868c671019cf8d643cfdc978a693f17420e3e946c6338e8c671819cf1d643ca5643ccf92f15c43c6938df79732e1e948c65341c633858c670e19cf28329e8bc9780693f15c44c6733319cfe5643cc792f1b426e32927e379848c673c19cf70329e3bc978ae23e3e94bc6b3888c672a194f4f329eb9643cf793f1cc20e31942c6732b19cf95643c9790f13c46c65346c6d39c8c672219cf08329ebbc978da93f1dc40c65349c6338d8ca73b19cf3c329eb1643c43c9786e27e379868ce76a329e27c8787a93f14c26e31949c6730f194f3b329e9bc8782e23e32922e32926e3e94ac6f33019cf7c329e5a329e99643c55643c03c878ae25e3e943c6b3908ce741329e5e643ca3c978ee25e3b9858ce70a329e4e643c8f92f11c47c6d3868ca70b19cf02329e02029e4470e8182609f8ff0b606b662cab3efbfa42dbbaffbfaaedcd6099d774beb965ddaf824dbe25fb9a6559d4e955a84ba5ce977eb329a913faaa8479f157041caf91f02c20e3e942c6d3868ce738329e47c9783a91f15c41c6730b19cfbd643ca3c9787a91f13c48c6b3908ca70f19cfb5643c03c878aac8786692f1d492f1cc27e379988ca72b194f31194f1119cf65643c3791f1b423e3b9878c672419cf64329ede643c4f90f15c4dc6f30c19cfed643c43c978c692f1cc23e3e94ec6338d8ca7928ce706329ef6643c7793f18c20e39948c6d39c8ca78c8ce731329e4bc878ae24e3b9958c670819cf0c329efbc978e692f1f424e3994ac6b3888ca72f19cf75643c7792f10c27e3194fc6f308194f39194f6b329e63c9782e27e3b9998ce722329ec1643c1793f18c22e39943c633858ca7828ca72319cf0b643cd790f13c4bc6534ac6730719cf30329e71643cddc8783a90f14c27e3e94fc6732319cf20329e1a329ed9643c93c8783a93f13c4ec6731519cf93643cb791f1dc47c633868ca70719cf43643c8bc978fa91f15c4fc633908ca79a8c671619cf040bcf0b8e78e47d7759b7ccbf40e2dbc1762855eb7ddd519dded0eb6aa1d72bfce2af10cacc3c26f5ab9e0fe1b2c2657e9f00efc5bd011abde1a82eb23d0a8ced83be5f71e4dbfc5eb3ccbfd2c47db7367cb7ce13df6d0cdf6df2c4b78f731fe7f9e0dbc7b98ff37cf0ede3dcc739936f07d70665f89d34990a8cf94ac8e3f5828befcb39aa67bdebc4af63d44f69f5a6a195796d550c655e07fdde74a09fedda53e6c55fa6cced0898312e4a8278e36249fc752a53fd328f065d9718fa62bd963ad234ea18b2b489fb8e3a863475df51c790a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc9f75b3a1fe3756329fa50cf17e57ae02df0bb5ce70b62f4abd6b54cafab50af5b3896835dca344ba47e5b077e9f77e1dbeff3fed8960fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c9b79e92f7e11b0b9eacf1f158bd97897e048fa8e8ac5a6ee3b2a169bba6f1fe73ece997caf70e03b013e644ad7c76f05f02c73c0e3a89ec9671b2b8d3abd60d4a918cae0317ea5837a16805f59b7ccaf041e9926008f8b3868c836479e59643cd5643c03c978ae27e3e947c6b3988ce721329e1e643c63c878ee23e3b98d8ce749329eabc8781e27e3e94cc633898c6736194f0d19cf20329e37c9786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e8e643c15643c53c878e690f18c22e3b9988c673019cfcd643c9793f11c4bc6d39a8ca79c8ce711329ef1643cc3c978ee24e3b98e8ca72f19cf22329ea9643c3dc978e692f1dc4fc633838c670819cfad643c5792f15c42c6f318194f19194f73329e89643c23c878ee26e3694fc67303194f2519cf34329eee643cf3c878c692f10c25e3b99d8ce719329eabc9789e20e3e94dc633998c672419cf3d643cedc8786e22e3b98c8ca7888ca7988ca72b19cfc3643cf3c9786ac9786692f15491f10c20e3b9968ca70f19cf42329e07c9787a91f18c26e3b9978c672919cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243dffd4fc0ffdf049bbca3fe02d856e9fc32b035b3f868aef32bc156a8f3b28ea3c2b4b4eda1eb469d5cbd978fbe2a615efc1501c72a129e05643c5dc878da90f11c47c6f328194f27329e2bc8786e21e3594ac6732f19cf68329e5e643c0f92f12c24e3e943c6732d19cf00329e2a329e99643cb5643cf3c9781e26e3e94ac6534cc65344c6731919cf4d643cedc878ee21e31949c633998ca73719cf13643c5793f13c43c6733b19cf50329eb1643cf3c878ba93f14c23e3a924e3b9818ca73d19cfdd643c23c8782692f13427e32923e3798c8ce712329e2bc9786e25e31942c633838ce77e329eb9643c3dc978a692f12c22e3e94bc6731d19cf9d643cc3c978c693f13c42c6534ec6d39a8ce758329ecbc9786e26e3194cc6733119cf28329e39643c53c8782ac8783a92f15c43c6f32c194f2919cf1d643cc3c878c691f17423e3e940c6339d8ca73f19cf8d643c6f92f10c22e3a921e3994dc633898ca73319cfe3643c5791f13c49c6731b19cf7d643c63c8787a90f13c44c6b3988ca71f19cff5643c03c978aac9786691f14cc80e4f997ab75dde9d0c800ba74ac8af049e371de8e3a89ea5f85d83af635cafd2ea6d43aba58656c5506605e8f7b603fd0ac0afac5be6c55f2e322b1e39a71356fc0ec493248c627bd32d4f72bf7d32a83fa5db6fdf061e17ed9aa37a26f7afd5469d9eb4e82e653056573ba8a76ddf91f9d5b01d728d59f13ca3f3c29a8072cf90308a6da55b9ee4fef54c507f4ab77fad061e17ed8fa37a26f7af35469d9eb1e82e653056d738a8a76ddf91f935b01d728d59f13cabf3c29a8072cf92308aed6db73ce509a8b34ce9f6af35c0e3a2fd7154cfe4feb5d6a8d3b316dda50cc6ea5a07f5b4ed3b32bf16b68367f6cc3666c5237db1853501e56690308a6db5539ef2d204d459a674edd85ae071d1ce3bd23dd98ead33ea34c3a2bb94c1585de7a09eb67d47e6d7597c9704f16ab1be015aacb7f0accfb216e22f53e61539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5cca0b3e291b111853501e56692308a6d8d5b9ee47b413383fa5381315f09f9f5c0b3d6813e8eea99ec43bec1a8d34c8bee5206f7af0d0eea69db77647e036c874c98d7e520b3d7b971cc8a6796ce0b6b02cacd226114db5ab73cc9766c56507f4ad78e6d001e17edbca37a26dbb18d469d6659749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3755e5813506e3609a3d8d63be5294bbedf383ba83fa56bc736028f8b76de91eec9766c9351a7d916dda50cc6ea2607f5b4ed3b32bf09b64326cceb7290d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a678ece0b6b02cacd216114db06a73c5d92cf1de604f5a774cf1d3601cfc6d87952cf1d1ce89e7ceeb0d9a8d31c8bee5206f7afcd0eea69db77647e336c87a6cebc2e07997d6c6487d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f1ccd579614d40b9b9248c62dbe89627f9dd83b941fd295dbf9dcdc0b3c9813e8eea99ecb7b3c5a8d35c8bee5206f7af2d0eea69db77647e0b6c07cfec996dcc8a679ece0b6b02cacd236114db26b73cc9766c5e507f4ad78e6d011e17edbca37a26dbb1ad469de65974973218ab5b1dd4d3b6efc8fc56d80e9ed933db9815cf7c9d17d604949b4fc228b6cd6e7992edd8fca0fe94ae1ddb0a3c2eda7947f54cb663db8c3acdb7e82e653056b739a8a76ddf91f96db01d3cb367b6312b9e053a2fac0928b78084516c5bdcf29425a0ce32a56bc7b6018f8b76de513d93edd876a34e0b2cba4b198cd5ed0eea69db77647e3b6c875c63563c0b755e5813506e2109a3d8b6bae549ee5f0b83fa53bafd6b3bf0b8687f1cd533b97fbd63d469a145772983b1fa8e837adaf61d997f07b643ae312b9e453a2fac0928b78884516cdbdcf224f7af4541fd29ddfef50ef0b8687f1cd533b97fed30eab4c8a2bb94c158dde1a09eb67d47e677c076c83566c5b358e7853501e51693308a0d8f178b1df1141b3cc5162d8e946f35df5be78bf46f02fedf1b185db5878b0d4699c718475ed79ab536785a1b9a1d49dfaafe153a7facfec5ed55018c0cdbab7516346b63f0b431343b92be95167d74fe38fd8bdbab0f30326caf36c0e3a07d2e4f183c6a4a77beb1c3b13e8eea993cdfd819d875c7e39094c163f74e07f5b49d4bc8fc4ed80e9ed933db9815cf009d17d604941b40c22836bc4ed9153f4f79c2e05153ba766c97637d1cd533d98ebd1bd875df05ba4b198cd5771dd4b300fccaba65fe5dd80e9930afcb4166af73e39815cf409d17d604941b48c228b69dc0f35efc3ce50983474de9dab1f71cebe3a89ec9766c7760d7fd3dd05dcae0feb5db413d0bc0afac5be677c376c884795d0e327b9d1bc7ac7806e9bcb026a0dc201246b1bd0b3c7b62e7498d07843c6a4ad78eed71ac8f9b7aa6dab1f703bbee7b40772983fbd7fb0eea59007e65dd32ff3e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a67b0ce0b6b02ca0d266114db6ee0f920769ed47307e45153bae70e1f38d6c74d3d53cf1df60676dd3f00dda50cc6ea5e07f52c00bfb26e99df0bdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219a2f3c29a8072434818c5f63ef07c183f4f79c2e05153bae70e1f3ad6c7513d93cf1df60576dd3f04dda50cc6ea3e07f52c00bfb26e99df07db619f67f6cc1666c53354e7853501e58692308a6d2ff0ec8f9d27f5fc1479d494ae1ddbef581f37f54cb5630702bbeefb41772983b17ac0413d0bc0afac5be60fc076c884795d0e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d8f601cf47b1f374294d183c6a2a30e62b21ff91637ddcd433f5dce16060d7fd23d05dcae0fe75d0413d0bc0afac5be60fc27668eacceb7290d9c74676987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308aed00f07c1c3f4f79c2e0515381315f09f98f1debe3a89ec97e3b9f0476dd3f06dda50cee5f9f38a86701f89575cbfc27b01d3cb367b6312b9e1a9d17d60494ab216114db41e0f9347e9eb284c1a3a674edd8a78ef57154cf643bf65960d7fd53d05dca60ac7ee6a09e05e057d62df39fc176c83566c5334ae7853501e54691308aed13e0711077499e628347e63f25f0ade66b75be48ffe2f6aa054686ed559c05cd5a1b3cad0dcd8ea46f55fff13a7facfec5ed351e1819b657eb2c68d6c6e069636876247d2b2d26e8fc71fa17b7d7046064d85e6db2a0d9916c0f8fe4be7d24e3d46b7ee4342f38829a171c41cd0bbce6549a3b38be94e1b12c00069c2a21ff19f07c3b7e9ee47db9cf32e0f936f07c2b7e9ece8eea59aad6fb1d608f6bbd4aabef1a5a7d6668550c6590e1bb0ef42b00bfb26e99177f9ed9334731e3b9adb026a0dca7248c62fb16f0b8683754dd3be875c9fa5b84e9cb13ebfcba785e82f78a5be8f50a87f82b8432d34aeacafe59b315c1ff65bba9fa1c346c8ede61ee6c7b6e27f3e2af28c8dabddbb4f792510b17cf9b323dee1fb4f07c1d1f4f29eee7e8eb80a3ba67f2ecef808527c6ba778e7aeeb93ffeba27db8f8e7a5db27eb58ffed7894e352fc77d4fda8f8e469d0ba1cc8092bab25f43fb616b2b5cef9b724e6eee9bcd82baf64cb84ab4dd7c26f4b5b64bb98fa13cb639bdf52fee9fbda1aeaedac5a87b4cd82e9a6db74bedcde792a6ef62d0e56352cd6ccf2950c70a0b77050137c66336f73359b7ed195985a1239b66b8ad3fb6e8d8c7c2dd87809b71bfee63e8c8a6d9e1f6eb0116ee0104dc8cfbf500434736cd0eb75f0fb4700f24e066dcaf071a3ab26976b8fd7a90857b100137e37e3dc8d0914db3c3edd7832ddc8309b819f7ebc1868e6c9a1d6ebf1e62e11e42c0cdb85f0f317464d3ec70fbf5500bf750026ec6fd7a68505f4736cd0eb75f5759b8ab08b819f7eb2a434736cd0eb75f575bb8ab09b819f7eb6a434736cd0eb75fd758b86b08b819f7eb1a434736cd0eb75f8fb2708f22e066dcaf1bda6f9f75bfaeb570d7127033eed7b5868e6c9a1d6ebf1e6fe11e4fc0cdb85f8f377464d3ec70fbf5040bf704026ec6fd7a82a1239b66b6fddad1bb8419bfdbf889537d52634c7f9201cf47c0e322a61cc541a9a37e2ec9bea9fb0dad3e31b4c2b13b0e807e0efac2a4fd2681f8f3cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccf8cdf65c4e72b52ee631246b1e1332917f7f955dd3be975c9fa5b8469c0c9757e0fc4eeb7acb4c0f057091ce2af10ca9c7b4e5dd9bb355b5170e876c3b1b8715bee8bbd0ea96d69c6bfcc8bbf22a8cf7ee071f07e7e92e780c173c0a205be771a8fefb2e16e342e2b55dfc73b3aa8dbcefb8cfaa0a61fc6eebfbea60586a61f3af69d08ea6f4f61c0a912f2c8e3e2d9b0a37a26db82bd469d4c8d8ba14c3ba8e75e07f52c00bfb26e99df0b3c32e13379573118183c81451f999a91f15493f10c24e3399f8ce77a329e53c978fa91f13c44c6d3838ce768329e31643cf791f1dc46c6730e19cf55643cd93807cf84e771329ece643c2790f14c22e32924e3a921e33948c633888ce742329e1bc9782e25e3399d8ca73f19cf74329e6e643c1dc87812643ce3c8788691f1dc41c6534ac6d3968ce71a329e93c8782ac8783a92f14c21e36949c6338a8ce762329ec1643c1791f1dc4cc6732619cfe5643c8f90f19493f11c4bc6d39a8c673c19cf70329e3bc978ce23e3b98e8ce714329ebe643c53c9787a92f1b422e3b99f8c670819cfad643c6793f15c49c6730919cf63643c65643cc793f14c24e3694ec633828ce76e329ef6643c1790f1dc40c6731a194f2519cf34329eee643cc790f18c25e3194ac6733b194f0919cfd5643c4f90f1f426e339918c6732194f0b329e91643cf790f1b423e3b9898ce70c329ecbc8781e26e3e94ac65344c6534cc6534bc65345c633808ce75c329e6bc9784e26e3e943c6f320194f2f329ea3c8784693f1dc4bc6730b19cf59643c5790f17422e3398e8ca70d19cfa3643c5dc8780a087812c1a1df624ac0ff0f804dbe19f411d89a59d627cf61a5bc3a2eae6d7be8ba9b59d6fda1850175fa00ea52a9f3a5df6c4aea84be2a615efc1501c787243c5dc8781e25e36943c6731c194f27329e2bc878ce22e3b9858ce75e329ed1643c4791f1f422e379908ca70f19cfc9643cd792f19c4bc633808ca78a8ca7968ca7988ca7888ca72b19cfc3643c9791f19c41c67313194f3b329e7bc8784692f1b420e3994cc67322194f6f329e27c878ae26e32921e3b99d8c672819cf58329e63c878ba93f14c23e3a924e3398d8ce706329e0bc878da93f1dc4dc633828ca73919cf44329ee3c978cac8781e23e3b9848ce74a329eb3c9786e25e31942c6733f194f2b329e9e643c53c978fa92f19c42c6731d19cf79643c7792f10c27e3194fc6d39a8ce758329e72329e47c8782e27e339938ce766329e8bc8780693f15c4cc6338a8ca72519cf14329e8e643c15643c2791f15c43c6d3968ca7948ce70e329e61643ce3c87812643c1dc878ba91f14c27e3e94fc6733a19cfa5643c3792f15c48c633888ce720194f0d194f2119cf24329e13c8783a93f13c4ec6b39f8ce72a329e73c8786e23e3b98f8c670c19cfd1643c3dc8781e22e3e947c6732a19cff5643ce793f10c24e3a926e36946c633c1e0c1ffab77c3e4fc48be1d5408ff9fae3b97b7d6eb9232f28e92bad7f5be6153f5dde3a8beef07755325ccef81fa0afbfbc0f3be239e0f0c1ed37711e42b40b3dd864d31bee78871b7c128f3ef01a3e8b71b78763be2d963f098be8b20df07347bd7b029c65d8e18df3518657e17308a7eef02cfbb8e78de33784cdf45901f009aed346c8a718723c69d06a3ccef0046d16f27f0ec74c4b3cbe0317d17417e2068f68e61538cdb1d31be6330cafc766014fdde019e771cf1ec30784cdf45901f049a6d336c8a71ab23c66d06a3cc6f0546d16f1bf06c73c4b3dde0317d17417e3068b6c5b029c6cd8e18b7188c32bf191845bf2dc0b3c511cf5683c7f45d04f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37711e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf4590af02cdd61936c5b8d611e33a8351e6d702a3e8b70e78d639e2596ff098be8b205f0d9aad316c8a71b523c63506a3ccaf0646d16f0df0ac71c4b3d6e0317d1741be06347bdbb029c6558e18df3618657e15308a7e6f03cfdb8e78561b3ca6ef22c88f02cd561a36c5b8c211e34a8351e65700a3e8b71278563ae25965f098be8b205f0b9a2d376c8a719923c6e506a3cc2f0346d16f39f02c77c4b3c2e0317d17417e3c68f69661538c4b1d31be6530cafc526014fdde029eb71cf12c33784cdf45909f009a2d316c8af14d478c4b0c46997f131845bf25c0b3c411cf5283c7f45d04f9dbc126bcbdc0f686cef704dbeb3adf036cafe97c77b0bdaaf3ddc0f68ace7705dbcb3a5f0eb69774be0bd85ed4f932b0bda0f39dc1f6bccef705db733adf0f6c8b75be126c8b74be3fd816eafc65605ba0f397836dbece5f01b6793a7f25d8e6eafc55609ba3f357836db6ce5f03b6593a7f2dd866eafc75609ba1f3d783ed599dbf016ccfe8fc8d607b5ae76f02db533a7f33d89ed4f95bc0f680cedf0ab6bb74fe36b07da2f37780ed539dbf136c9fe9fcdd60fb96cedf03b66febfcbd60fb8ecedf07b6efeafc30b07d4fe78783edfb3a3f026c3fd0f99160fba1ce8f06db8f74fe7eb0fd58e7c780ed273a3f166c3fd5f97160fb99ce4f04dbcf757e12d87ea1f393c1f64b9d9f02b65fe9fc8360fbb5ce4f05db6f74fe21b0fd56e7a781ed773a3f1d6cbfd7f987c1f6079d7f046c9febfca360fb42e71f03db973aff38d8fea8f34f80ed4f3a8f63ddfe59e74b8278dbd9af82baa9047c8b3f55e62f3adfd22823cb1642998eba83a37ac6a1be652aedb0b4cbca26edf01b609376f875b0493bfc1ad8a41d7e156cd20ebf023669875f069bb4c32f814ddae117c126edf00b609376f879b0493bfc1cd82a757e31d8a41d5e0436698717824ddae105609376783ed8a41d9e07366987e7824ddae1396093767836d8a41d9e0536698767824ddae119609376f859b0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c30f804ddae1bbc026fbcb576093b6f913b049dbfc29d8a46dfe0c6cd2367f0b6cd2367f1b6cd2367f076cd2367f176cd2367f0f6cd2367f1f6cd236ff006cd236ff106cd236ff086cd236ff186c6375fe276093b6f9a76093b6f9676093b6f9e76093b6f9176093b6f9976093b6f9576093b6f9d76093b6f9376093b6f9b76093b6f9776093b6f9f76093b6f90f6093b6f973b049dbfc05d8a46dfe126c4fe8bcb4d5adc026cf8ad554fa0d271c8707cff985a93288b7edc7a912f28f43dd656a46c6f31c194f3519cf40329ef3c9784e25e3b98b8ce768329eb9643c2f93f1fc918c671d19cf5a329e9d643c3bc878ce21e3d94fc67302194f2119cf22329e1a329e37c8780e92f10c22e3b9908ce752329ed3c9783e21e3e940c69320e379918c673619cf1a329ed5643cef90f16c27e32925e3694bc67312194f05194f47329e96643c0bc8784691f1bc46c6733119cf60329e8bc878ce24e339968ca73519cf4c329ef1643ccf93f1bc4dc6b38a8c671b19cf56329ef3c878f692f17c40c6730a194f2b329e79643caf90f10c21e3399b8c670919cf25643cc793f13427e3594cc6b3928c670519cf9b643c5bc8783693f1b427e3b9808ce77d329e3d643ca791f11c43c633878ce725329ea1643c25643cbdc9784e24e36941c6b3908c673919cf32329ed7c9783691f16c24e3f98a8c673719cf7b643c6790f11491f11493f1cc22e3a925e379818ca78a8c670019cfb9643c2793f1f421e3398a8c673e19cf5b643c4bc9785e25e3d940c6b39e8ce75d329e5d643c6791f17422e3398e8ca70d19cf0c329e02029e0470046093ff3707db973a7f106cf2bd9efd60fb42e79780ed739d7f026c8f5a6ccd2c7cc2f025d8e4dde6c7c026f73fbf009bbc13f039d8e4bc4afcabf9ad6d0fe56f06cb889fe6167ef4f7b9854bf2b8bd6599ca20deed8dbe2a8343bfa754041c8f91f0cc20e36943c6731c194f27329eb3c8787691f1bc4bc6b39e8c670319cfab643c4bc978de22e3994fc67314194f1f329e93c978ce25e31940c65345c6f302194f2d19cf2c329e62329e22329e33c878de23e3d94dc6f31519cf46329e4d643caf93f12c23e3594ec6b3908ca70519cf89643cbdc9784ac8788692f1bc44c633878ce718329ed3c878f690f1bc4fc67301194f7b329ecd643c5bc878de24e35941c6b3928c6731194f73329ee3c9782e21e35942c6733619cf10329e57c878e691f1b422e339858ce703329ebd643ce791f16c25e3d946c6b38a8ce76d329ee7c978c693f1cc24e3694dc6732c19cf99643c1791f10c26e3b9988ce735329e51643c0bc8785a92f17424e3a920e339898ca72d194f2919cf76329e77c8785693f1ac21e3994dc6f322194f828ca70319cf27643ca793f15c4ac6732119cf20329e83643c6f90f1d490f12c22e32924e339818c673f19cf39643c3bc8787692f1ac25e35947c6f347329e97c978e692f11c4dc6731719cfa9643ce793f10c24e3a926e3798e8ca71919cf040bcf12473cd27745d62df34b9ab8ef3d86ef3d79e2fb3dc3f77b79e27b97e17b579ef8de61f8de9127beb71bbeb7e789efad86efad79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e65f85e9527be5718be57e489ef6586ef6579e27ba9e17b699ef866befe56df79926f41ecd5bf09f83f8e1fb7df11e3128351e6f703a3d870fcf7de8e78a2aedd7b13f8565a48df4579873e01ffaf00465731d5db6094795b4ce178a3158e78a2ee395410f8565ac8b71ce59b5809f83f8e9fe22aa62a0c4699b7c5148effd5c7114fd4bd923e04be9516f22d47f9067002fe8fe313b98aa93e06a3ccdb620ac79b18e08827ea1ecf0002df4a0b791623cfcc13f0ff81c0e82aa606188c326f8ba91dc033d0114fd4bda98104be9516d2f74cfa2c27e0ff8380d1554c0d341865de1653db816790239ea87b6a83087c2b2de4dd2879873501ff1f0c8cae626a90c128f3b698da0a3c831df144dd0b1c4ce05b693144e7e51b3909f8ff1060741553830d4699b7c5d466e019e28827ea1ee61002df4a8ba13a2fdfe04cc0ff8702a3ab981a6230cabc2da6703cdfa18e78a2eebd0e25f0adb4a8d2f90dfa3701ffaf0246573135d46094795b4ce1786d558e78a2ee195711f8565a48df18e9339880ff5703e350478c5506a3cc0f0546b1ad059e6a473c51f7baab097c2b2da4affb1afd9b80ffd700a3ab98aa361865de1653ab81a7c6114fd43dfa1a02df4a8b513a2fdff048c0ff4701a3ab98aa311865de1653ab806794239ea8670ba3087c2b2d64ec03f9265f02fe8fe365bb8aa95106a3ccdb626a05f0d43ae25966f02cb36871a47c2b2de4db2fcbf56f02fe3f1e185dc554adc128f3b6985a063ce31df1443dcb194fe05b69217d3bdfd2bf09f8ff0460741553e30d4699b7c5148ebf3cc1114fd433a80959f01df53c251bbea39e0d64c377d47dee6cf88eba679b0ddf51f71fb3e13bea5e5a367c47dd17ca86efa87b1cd9f01d75bd9e0ddf51d79ed9f01d751d950ddf51d704d9f01d757e9b0ddf51e76ad9f01d75dee1db73df9ec7edfb489e3be46b7b7e248fa147f258e2af0dfcb541b67cfb6389bf36c896ef7cbd36f0ed79f6db73b9fe2a08a2afc75639f2bdc2f02df3f89c658523dfcb0cdf328fcf0c9639f2bdd4f02df378ff7ba923dfc5866f995f9a05dfad0ddfadb3e8bb8de1bb8dc5b783ed5d9608ea5f7f0b034e9590c71878cb81168eea59aad6bb5cafebeb18d76bbb6f63ee2fc5506639e8e7baed90759b6d472e32635c14c4e7bb34013e649c3b6593e7c76f804ddafdd7c126fd025e039b1c9b5e059b3c937a056cf2ccea65b08dd2f94fc026cf8eb1cfbe3cffdf05b62a9dc7bee243757e07d8a42f15f65196fe70dbc1267d1ab16facf44bdd0a36e95b8c7d32a57ff866b0491f7fec0b28ef696c049bbc6b837dd0f6ebfc7ab0c97735b1efd3173abf166c5feafc1ab03daef3abc1f688cedf05b63fe8fc57607b58e79782edf73aff16d8a6ebfc72b0fd4ee75f02db6f75fe45b04dd3f917c0f690cee3bb6cbfd1f90fc03655e7f11daa5febfc1eb03da8f3f8eeceaf74fe3db0fd52e79f07db149d7f0e6c93757e31d87ea1f38bc03649e71782ede73abf006c13757e3ed87ea6f3f3c0f6539d9f0bb6713a3f076c3fd1f9d9601babf3b3c03646e76782edc73a3f036cf7ebfc1fc1f6239d5f06b6663abf026c322622f65391ef7cae029b8cf58dfd8f64fc8309603b4ae7c783ad95ced7824dbe0d370a6c32be700dd8123a5f0db6229daf029b9c9f0d059b8c0f33046c722e35186cc7e9fc20b0c979cf40b0c9788d03c026df20ed03361987bc026c32f6406fb09dacf34bc02663b2ed079b7c27ee20d864ece32fc026df87fe126c67e8fce36093716a1e01db593aff07b09dadf30f834dbe29fa7bb095e8fc74b0b5d5f9df81ed5c9dff2dd8644cb3696093efd03d0436193bf8376093ef3d4f055b3b9dff35d82ed2f907c12663bffc0a6c32fee52fc1d65ee7a7804dbe7b3d196c1d74fe176093f1382681ad93ceff1c6c32eec244b075d6f99f81ad4ce77f0ab62e3a3f0e6ce53aff13b075d5f9b160eba6f363c0d65de77f0cb61e3a7f3fd87aeabcb4336a7f56fbf9013d5f19c4775ea6fc7d14d49fd25d1b0803f2c479ae5d0c3ce86b5fec752f4b9ed74b5bd04caf5762681ff8de1bbbefd435c5877a5d857abd7b0ddf8550a654370e6a3939e637d7cbed3796c3fb58b26e59a613d83f30d6dd5ad7f74347f5dd6b300937ea2065ca35933a36fe42e71dbdc39fbc3e96580b40439c2a212f0c6eb42a2bc573e186f07c083cfb62e7495dafbb8809dcb7e2be5e37efe39ab1560c65f6827e1f38d00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ae780cee3b36629778084516cfb80c7c57d7e7c0e2beb57cf753e3ea7ceefbed8fdd67fbed742afb7d4a873219469595257f65b9a0dc71e95ed16b52d1d3c274cbb2dc55f11d4079f051d70c4b3cfe0d967d142f225b1f92e1bee46e3b252d597453d63df6fe87ac0a2a9abfd759f5e5781a129eeaf1f193cf86cb408783fd6bf0958cfc7500707fb78dab8107fb82fed039be43f024617db198f25d21ec8f3707c362d65be309e8bc7bfedcb4a5db61bef439d2a8343e3bb10cafc199eb7ff55e7b16fc801d0ed7f5bfe2f53bae7d4a29faaf3eef8eb9cdcbeef016725f841dfef026b4cbeebbd4353a093f8117b21e4ff17f4e79072a287682dec6a1f913e9dc86e2ef791b15c3194d963a97f65106ffd771b3cbb0d66b54dfe0171f6bfe1f8efaa4dda13a15127d048caec038df63be2d967f00887f8536564fbb734cac8b28550e6bfa18d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf81870721defbed87973abff57eb92d42fb6eb71f5ff9275b7d6cb0a4760acbf14d62f5c2d83e8638b9439a1a46efd2efb97ed37ea2c2ca8b39439a524f5abe2ec269dcfe45cff485db7459debef71c09308ea5f7bab29ddf11d8f31ef3be07154cf52dbb1eb03a34ec550a61dd4d3c1794cda778177836f17db1cb59073a8bd86168550e6e292d4afb41d513ae2b5ea8759a94b99f57cb0d4521729d3a9a4ae2eadc01e2793cbedf62ed449ad779fa5ae52a6bca44e976e3a9f80ed84f74daeb4fc5fa674ed018ec5b333fe3a27b7ef0ee0ac043fe8fb1d608dc977bd6f81c8f9bef8117b21e4af28a92b2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3cb52ffca20defaef3478761acc6a9bf42ca9cb4b1cb96c37774568540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452e6f692d4af6a671396b2e6bd6117f731f1ddd200ea111875950963c0c1b561395e3b493b257e3a827d9fce8bce1d0ded0aa1ccbd25a95f87e7ddd67b97e6f51d5e5308b7b96fe1bb1f552575dc2aee653bedd3bf4560fb54ff3aba4e2bb7dd33140edb3dc3512575ecb8ac707d62a98b798ddc2c38f49efad74659bcef966e39f4a5a683c6324adf4f2d4cfb0c3fad60d9d8ded5e85c5a1ac57f10f83e32986dbaca7e8031b74fe7cd7d05af8da5ccd492d4afb4496659b5edffebc43a7d643b8a76d89e604c7e048c953a5ffacda6e43e77d0a8bfcc8b3fc528f77b0e024ffc6d57ea7da54cee03ef071e176dbba336ba148fb1ad625b6fcf2adbf1ff2343ab2c3eafb51ef3cd67eead8c7c3cbecbaa6df79f6c5aecb5f0b87a8e12a5c55e8beff8b4e836dcd6ced9b4c866df87282d3eb0f88e518b1abcef994e8bf72d3c2eee45a5d3e27d8beff8b4e85e9aeeb9066ab1c7c2e3eade439416e22f53e60f08985b19f9787c9757d9ee93d9b4d86de17175dd1ca5c56e8beff8b4e8dc0defd1a5d3e23d0b4ffcf7e7d26bf19ec5777c5af4e889f7f0d269f1ae85c7d533dd282ddeb5f88e312e46d8eee5d8b4d865e1d995652d76597cc7787ed8cd76afcda6c54e0b8f83fbae69b5d869f11da316c3f0be6b3a2d7658787664598b1d16dff16951d5d5764fd8a6c53b161e57f784a3b478c7e23b3e2d86f550beb737408bed169eed59d662bbc5778cd750c9b8d8d6002db65978b665598b6d16dff169519d3cd7dada002db65a78b666598bad16dff169519a3ca66e6980165b2c3c5bb2acc5168bef18e322793db9b9015a6cb6f06cceb2169b2dbe633c8e24e3625303b4d864e1d994652d36597cc7a7454df2fed3c60668b1d1c2b331cb5a6cb4f88ef19e4b322e3634408b0d169e0d59d66283c5777c5a74491e53d737408bf5169ef559d662bdc5777c5a8c483e135bd7002dd65978d665598b7516df319e7726db8bb50dd062ad85676d96b5586bf11de37967f2fec59a0668b1c6c2b326cb5aacb1f88eb1ed4c9e77ae6e8016ab2d3cabb3acc56a8bef18cf3b935abcdd002ddeb6f0bc9d652ddeb6f88ef1bc33791c59d5002d5659785c8d8112a5c52a8bef18e322d976ae6c80162b2d3c2bb3acc54a8bef18ef6b25dbce150dd0628585c7d5780d515aacb0f88ef17a24798f6f7903b4586ee1599e652d965b7cc7f8ac28790ebeac015a2cb3f02ccbb216cbc0f7fed87da7fa738b0fe98bd5c1d0a210ca5cd836f52b7db1a274947560bf32accb5bb1d725d5af6c69445dde82ba48994ba12ead02276314953baa6b326696409dd47a3fb6d455ca746e5ba74b179d4fc036f90474bbccf27f990a8cf94ac88b7eaace6fc45fe764acbe0e9c95e0077dbf06ac31f9ee8cbe0b74123f622f847cffb67565a59ce8215a0bbbda47ded4796437975b662c570c65deb4d4bf3288b7fe6f183c6f18ccc9f71e20ce248edcb45d29a6372334ea001a4919ecb3f7b1231eb30fa170883f5546b67f4ba38c2c5b0865ae83360afb954a3d13c1a1fd261db5659d915dd62df3e2af186cfb81d1aca38a8f2fa1efa78c1521e348289b8c0bd105d6d3ddb0a9baf6705457f125eb96f91ec028e35474cf3e63594319bb198c8aa79703cd70ec0d99d21d2f7a014f4f073c8eea993c0ef536ead4c3a8533194c1771b7b3ba86701f89575cb7c6ff0ed629ba316724cbed8d0a210ca8c32ce1fa3749475a8f8ed6ea94b5fc77591754bbbd4370bbe2b0cdf5d0ddf89a0fe760e82f4fb570530f771c0acd6db2ffef596e2799bc494f8e90a75ea0f1ac455275c979ce7f537b42d84fca3709e27e5a4ac1cbf845dc5b26c4b643797eb652c570c65fa5aea5f19c45bff7e064f3f83596d9389706ee7607f48c6405f8343e6bb8276fd22b4eb0bda49193cfe7577a45d1f83a78fe15bf1c8394e6fb0c9b982f027e0ff5db2c06db67bbd2ddc62c371e26ce73adde2674c7baed30d18c5d607782a1c69666eeb8b0d7df0b8dcd22823cb164299e7e0d898b09455fb5dbb82ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6382bab11a274dae9d386ce488db46a41e3d0a5aa18189bf05966a34031be69b5b6c41507f48ca42b0c990942dc0d6cc900587c294f232a49d0bb9500f5977a1c1d90a58e2f48dc379ca942e748e021e17a1ac424786f4d4a173d7c4d19347607cb430381b133bea7fcdd3948b5a97abed60ee1395306fc660a123ffcda1be95302ffed4b629d6f9f1c3863fd07fe2c82963478c9b3c098532776ccc1704f53780f91b25b8ab9d0e03002b8c8d430ba35ed860c8ff64c31c133f67398e996b6a13803f998e01dd8e76a09b5abf8c7d3b7cd89831b74ca91a337af85553c60d9f3cba761c6ecd568672515b5afedf126cb6261ecbaa099b2d5cf6288bcd36e128c3adc02647aea3c1263cc780ad39e4a5bcb9659c846b3b58bfec52ea7f4a9c16bae247057521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e3d480d1dac860a3e2b480d05acbe765112a486f63d37480ddd7b7e901a9af742e0fb36305f14a44ebbd4d0baed83d4d0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a49fd6ba7f982e0bd3e561ba224c5786e9aa305d1da66bc2746d98ae0bd3f561ba214c3786e9a630dd1ca65bc2746b986e0bd3ed61ba23480def7c67901a7e5d0dff7c77901a1afa9e20356cf4bd416a48e9fb82d470d3c382d450d4c383d430d52382d410d62383d4f0d6a383d4d0b90f04a9a176c706a9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f2f420350cb31ab2f9d1303d16a486747e224c4f86e9a9303d1da667c2f46c901a1e5c0d1b3e2b480d33ae861f9f1ba4862b9f1fa4863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f394caf84e9d520f548423d8a518f28d4ed7ff5184cdda27e2b48dd3a5f1ea41e71ab47feaa0b84ea12a2bac8ac09525da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aaf705a9dbe20782d4a352753b5c3d1a50b7ccd5edfbcfc2f4ad201593df09d377c3f4bd307d3f4c3f08d30f83d410c66ab863355cb21a5a590db9ac8667564339aba1a0d510d1bf0e52434faba1ab7f17a486bffe43983e0f5243707f19a4865fff5398be0ad39fc3f49730fd354c7f0bd3dfc3f48f30fd4b98fe354cff16a67f0fd33f83ba61b6b121395db73efa0a26183679f288b1e327974cae2d193b65cce4d1e3c74c2b993a7af2a892da07474cac19533b1517feb65e58c608ef3f71e2b06925a3c7558f78a8a476cae492da9a92aada29e3aaeb1dc4ffaa173af3508fc3aaaba39dfdc73721fdbf8d747ab46e1765f4f56bd3d7ada879230439be310b756bdeb80a4dd74730b9d4bd3d751e5c32694cede492d29271e1dff0c05b3b754475c712fcdfa450e449934b264d1e36717249cdc4dab1259d3be27a671cd3884a1424dcc07438bd71e274d2df596a54887d7e4e2314f8fa9cc6911e5bf20d488f2f699cd38b4a1a51c38e8d59e8b646120e2e899465d294aac913870d9f1cbdf0b06fb2f0c8c654f3c14656f382b68d70d6be310b5ddbb67184231be36c7106ce82ff0f4e77936acc560600", "isInternal": false }, { "selector": { "value": 2603445359 }, - "bytecode": "0x1f8b08000000000000ffed9d77741cd775c667d158164b1024c15ea046b3015c2c1a0136b0774a9464f5429004455a24419150b32c4bb224f7debbe516cbbdf758a97612274e1c3b96bbe36e4b2eca3f39ce49cef1c97bb3ef1a1f1e67d658682e78077be79c8b7d73f7eddcdffbe6ce9bd9f766074f054190098a4bb5b18b8273177abfcfbde69fded296e0b6f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82914bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413afaa8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d867b5de65e97bbd715ee953eb3cabdb6b836d6b8f55663ab2d9bb136efbd82b176631dc63abdf7ba8c751b5b63acc7bdd7ecdeeb35b6d6d83a63eb8d6d30b6d1e9b0c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e63971abbccd80163971bbbc2d895c69e69ec2a63571bbbc6d8b51ecb75c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b96b15b8d9d3076d2d8296383c64e1bbbcdd81963678d0d19bbddd81dc6ee347697b1bb3dcd9e6dec1e63cf3176afc7f95c63f719bbdfd803c69e67ec41630f197bd8d8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b8dbdcdb1d081f07663ef30f688b1771a7b97b1771b7b8fb1f71afb0b63ef33f6a8b1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb4b635f32f698b1bf32f6d7c6fec6d8df1afb3b637f6feccbc6be62ec1f8cfda3b17f32f65563ff6cec5f8c7dcdd3fc5f8dfd9bb1af1bfb77e7fb867bfda6ab4be362ff61ec5baefcb87bfdb67bfd8e7bfdaef799ef19fbbee7fb81b11f7abe1f19fb4f57feb17bfd897bfda97bfd997bfdb97bfd857bfda57bfd957bfdb57b7dc2bd3ee95e7fe35e7feb5e7fe75e7fef5e9f32765953b13c39185efa8284faa88ea3793ba742e22f0d462e568b6af71ebd363b7f8d5ba757d2aed6add77afe3ab75ee76d67b25b9fecf91bdd7aa3e79fe9d6677afe26b7dee4f9e7b8f5399eff62b77e31f8b3018cb93abff5553b57067c94af55e0ab75be6af0d5d1e6c037c9f96ac147fbb70e7c539c6f12f8a63adf64f0659d6f0a6969acdef9fa82a47225df6fb79b4b7abb6e1e6a5af2bc87ed761b9878a727cf3b60b7dbc8c06bf36386dbd674c89b99ced708be59ce37037cae0bfad331677db39d6f16f8e6385f13f8e63adf6cf0cd73be39e09bef7c73c1b7c0f9e6816fa1f3cd07df22e75b00bec5ceb7107c4b9c6f11f89a9d6f31f82e70be25e0bbd0f99ac147f7b85c00be8b9def42f05de27c17818ffada8bc147d78697389fed272667e033ce4f7d54f819ea9fc1b78cfa66f02da77e197c2ba84f06df4a884dbe55d0af90afc5f9a88fb2eff5ba725f90d43151088f89b5496fd76cd96e777df2db0de7ed3604c35af7419cb5a0d546574ef0dea0368c9d714671c85f03e55d5097ea911e749e21767b3e59e7ca1b4b7caed7fb5c0eeaac8b687f5f906cfbd77b3ceb3de65a683f4fceb617346747bd949db357435d3ff7e89a6722e6ec5ee060c8d92ecdd9512f65e7ec00d4f5738fae7b2762ce5e071c0c39dbcf93b385bce66c718c2c08a2738fbefb4cc49c3d061cc9e76ca7e6ece897b273f601a8ebe71e7dff9d88397b0770249fb3ddfd7a6d30eaa5ec9c7d05d4f5738fc6622662ce3e041c0c393ba0fdeca897b273f66d50d7cf3d1a179c8839fb6ae0483e677b9872b65d733628ce77064174eed118f544ccd9478023f99c3dace3b3a35fcaced9cf435d3ff768be6422e6ec475cd9ce337cc3cd332c04df379d6f11f0269fdb473a9872bba0b95dbc0f2408a27394e6ee26626e3fe6ca368f1f877b0fc8f76de7bb007cdf71be0bc1f75de7bb08dac5700cf4eb3130eaa5ec63e0fb50d7cf659a479e88c7c0d7818321670f6bce8e7a293b679f80ba7eeed13d0d1331677f041c0c393ba0393beaa5ec9cfd03d4f5736f992b4fc49ca5fb4aedf5c28fddf5c20af0fdc4f95682efa7ceb70a7c3f73be16f0fddcf95ac1f70be75b0dbe5f3a5f1e7cbf72be36f0fddaf90ae07bc2f9dac1f7a4f37580ef37ced709bedf3a5f17f87ee77cdde0fbbdf3ad01df53ced7e37c76be8beebdfaaaf3d97d4b1af505c9ee5bbac792b64debabc621768317bb611c63377ab11b2362b730c4ce420c5a32de7a1f945b7879f2b960e4ef3f28d6eae463b5dbb6b706a36ffb6ae0c933b43d0b3146c393079eb6e479c27b7d0bc96f37dcc7ad9ea65988d50aed6a6768570662d1b6699de2e5c087fd777b046347f28c850cc4a26dd37a0730920fcf27745ea7e3c79e0f97668679198ea5f09a88e2d1b3bf886335f8a9ceef670db3ad706cf5f03e9e5bdb3c1f535e867941b168dbb44ef1eaa13d6de3cf58182d63de63e4ea2332108bb6edc7c6e3bd65fc351bd57ecd81ef3cf44985b1f649f5c0361ed72971fb5a4a6c8ef355066250df469a17c04f7566bb1f24d8be6d07f4bb0cc75fa1dceb37ec0f92cfe3421e8febd1f0b4030fc7b1cf74bce6f1bcffc720d95cebf4b46af3b4ca419d0ed0af9341bf52d721144f99955999955999955999955999955999955999955999955999955999955999e533e3fd1738bf49f5560961245f017838c6f9c3e747b96dd1f6edbcce77605e27f9798b421ee72ce91ec3e55e9b6ba0ce9399e1ba3f80f9747f6e10e73457f16a37aafb2cea8373e76239e710e3e681a3e62f9b138b5d38cc35df669fa1629f43d6eae9ba2a425386fb5446689af134c5fb14577a3c364fe7550fb371ccfd953b17895a5139c9b93dbcc78077bf14fb0fca85aa6064ff81e799aec4638f9cc3a4f9f22e2f760dd4f99fccf0bea17b51e9ff1cfaf73cd93adddeb6e933cbc1dfed6dbbc17d96386abdedb7c267a9ceff419ffaf6aae04f9a71dcff81fd72006dc5a50fca386f9efc79b8388fdf5e064f27f070f4334cd71b793c06929ec7eff6b48aba8ea13a5da05f37837e51d7a2b44ef194599995599995599995599995599995599995599995599995599995599995593e33fe569458b350af2084719cee7d08e733e8f92fb47d3baff3d2aae1b8dcf37034e7b4c26b730dd4f95ad570dd57ba727d70eefd0e71fb92613eafe4bea478f5d01e9c0be2fa3d7787c7d311a105959b138b5d9cc74f5ee3e179fc764fd74284a65cc72bceb1a2a678bcb6793c38375a1f9c7b6f4916b6331ef70ec5e505c5c363a9037c54c6df4773ec673c97f8f7f5503c9cbf7ed469db1070edfb429eb3df58036dea0bcecdef1aa8f361e8fb3eeaca780f07de3bf258c4fbb4949aa726fd589e65972fcefbae05ce3e8883b1d7016b42b1db3076c619c5217f0d94bf54355c97ea911ea435b1db63849e0986ecfee7dabccfe5a04e4f44fbfb8264dbdfebf1f47acc769f7c02f2ec3138ff73f5493d311a2d078da80e5e0771dd93e7f791fefd8d78df5e9d5707af59a8ce57a08f8abb7f34ea9e43aef358dc3d8751d7c69dc0e8b7d1bfcfb3d2efd37a1cfa8ba4efd37a1c7208efd30abcedaf80ed13575d107f6ea13adff3b6ef5f93d367f03e30aaf343e82f1adc3d8bf5c1b9d7df78cfd4787cbf8abb4f9ae2e1750d1edb7faeed96790dd4ef4b9019730259f03a81eafccadb67dd31dcab233efb64cc6749ab1657c6ef2fbe7e56871ef84c5f223a148ff95eaf2d94d73dd016aaf35fde3560f2d72dc56bc0e4db3af29a84fa818e88b6529dff8663ed0f708d47fb09bf77d4559ffb3e2da5ae01493fdbe6f17e3e30c696f07ce0daeae1bafe737e49eb729f0fdce57d4ee2f381ff17f2ac0eee43e7eaabd7c568b40234a23af8db203a8fe0b37ca3ce315cf7f6c79d63a29e4189fd7343f5f8b3f9e36a51d70854873e8bd708b31c7383d3d9afeb8f17d2f932c9fb86f1b712ad10177f2bd1caa4671e74eb8375bc2e389fb1f34cb1e39e399d1f87d871cf9c1e8fd88d5eecc6718cad9aabe6923467782672f8fb337c66a95d4a5d9712430e3e579502c6ea1430d6a480b136058c7529609c9402c6c929609c9202c6a92960cc02e3f93cb733e85318ab3e5cfbabd4b506c66e61d2a29cffdfc1fcbf544a5efb606c86ef74a1162dc1e8b5c0ef791ccf7e28f77fbd1003feef821929609c9902c65929606c4a01e3ec1430ce4901e3dc1430ce4b01e3fc14302e4801e3c214302e4a01e3e214302e490163730a182f4801e3852960bc28058c17a780f19214302e55c6441857f23216c6ca687938fee7dfd3f99f630c3cf9a87b4e997e7b52f6ff5b637e3e69db589f1b87f796f0fe4fb8a7f76c3b8e7b47ca7db65da9ffb7cac458182b23d77decf83b9ed1f0e0ef22a37e5bc3c058182b23d7ef5ff0377aa3e1e902cd3a233463602c8c9591eb5eb972efe5c47bfabb223463602c8c9511efab4e9027d4acbb0c9e35a0597784660c8c85b13272dd979c8518a3e1e901cdd64468c6c058182b23d36fdb42cd7acae0c1df80f54468c6c058182ba3e559cba4596f193c6b41b3de08cd2431224fd2cfc9ee8d88c5f19bc172db4e0cc83825058c5353c088f74970f45fa5ee93e8e5d5a730567db8f657a9fb243036c3ef63422df0f7107f4e8bf5bc3c25ef93c0d81b98b4c0dfabfc392d36000fc7ef67b21063343cc49083cfcd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1bb2ac3b562c9ef2f1b2678ecb8ef2a133d76dcf792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d63fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e23d886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430e3eb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6a10f57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1e7da78190b6365b43cdb93e70935db5606cf76d06c5b84660c8c85b1325a9e1dc9f3849a6d2f83670768b63d423306c6c258192dcfcee47942cd7694c1b31334db11a119036361ac8c966757f23ca1663bcbe0d9059aed8cd08c81b1305646cbb33b799e50b35d65f0ec06cd764568c6c058182ba3e5d9933c4fa8d9ee3278f68066bb233463602c8c95d1f2ec4d9e27d46c4f193c7b41b33d119a313016c6ca6879f625cf136ab6b70c9e7da0d9de08cda432ae4d01e3c6143032eb58182ba3e5d9cfc4b3af0c9efdc0732913cffe32782e059ecb92e70973ead232788821079f5b9b02c68d2960541d5547498caa63e5e8a88ccaa88ce531f6a58051f7b5324a6564f87e55f23734974ef0d80d5eec860a891df71b9a891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c9714fb40f2b10be53e63e600f0703cf386a99d79bbddcbddb6fe98a07e56ab2b3cad2ef5b4ca419dcb41bf2b18f4cb405cda36ad53bc72999f2180992976619ad9c614683fc5d8e8e961e35fc9d4f6b8befeca091e3baeaf9fe8b1e3fafa891e5bf35cf3bc12626b9e6b9e57426ccd73cd7329b1b15c1b0c5fb7d3f34fed369ee9ca356e1d59c94f752e9b547c6d08f418e288adc7909e2b2a21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad792e2fcf311faac68127f07882123c1b84f1ec16c6b34318cf1a613c8b85f1740ae3992b8ca7208c6786309eadc278a608e3592e8ca75a18cf26613c79613c7b85f12c11c6b34218cf3c613c3385f14c15c653238c67b3309ed5c278f609e3d9238ca75718cf52613c3dc278b609e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8c67a7309e16613ccb84f1ec17c6b34e18cf02613c4dc278ea85f1e484f1d409e3592f8c6797309eedc278ba85f12c14c6d3218c67b6309e55c278a609e36910c6b34518cf24613c8b84f1cc11c6335d184fa3309ec9c278c6e37943e5f06404f06483739f499685f70f80afcafbacedafda9a86dfbfcaf9abe03357bb7275c4b6af021ffd36fcea88cfa24e57415bfa5c39fff49650278cd507eb14af1e38ae16c2734018cf64613c8dc278a60be399238c6791309e49c278b608e36910c6334d18cf2a613cb385f17408e359288ca75b18cf76613cbb84f1ac17c653278c27278ca75e184f93309e05c278d609e3d92f8c6799309e16613c3b85f1d40ae36915c69315c6b35218cf2c613cedc278e60be3e912c6b34d184f8f309ea5c2787a85f1ec11c6b34f18cf6a613c9b85f1d408e3992a8c67a6309e79c2785608e359228c67af309ebc309e4dc278aa85f12c17c6334518cf56613c3384f11484f1cc15c6d3298c67b1309e35c2787608e3d92d8c6783309eaa081e86ff7f19f2d0fd6bb46d5a3f202436c37e08ffefe7354c6dbad66dabd66d97f8295e0dd4b9ce5d18d8fb51f0b3c4e5df6f88f7ce5d0b1a5dcbd416da1f196fff30c72ee07d950130049e3e41040fc7fda84ced1c918709feffd9bcd5ea3a4f2b7fdfe5a0ce35a0df750cfa45e5f69f8e01f79a4666cb43e70e62cd42bd0d4218c977252f4f78dc6e08462ea58edbeb8087a30f636a67787c5defb5694384ee540773f57a8676461d3bb47e3dec87b4315b9e4dae4cac59a8b7490823f9aee5e5098faf4dc1c8a5d4f1753df070f43f4ced0c8faf1bbc366d8ad09dea60aedec0d0cea86387d66f80fd903666cbb3d99589350bf5360b6124df75bc3c1d5968332da58eaf1b8087a3ff616a67787cdde8b5697384ee540773f5468676461d3bb47e23ec076556e62866cb43bf3121d62cd4db2284917cd7b3f274e4b3d0665a4af56337020f473fcfa47bd88fdde4b5694b84ee540773f5268676461d3bb47e5344ece620592d6e1e85163747f0dc3cce5a50bc7299af4921b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaab35d5467d55975569d9360569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a167c4106b16ea6d15c248be1b7879c2df056d0d462e196fbd0fca3703cf8d0cfa30b533bc87fca0d7a6ad11ba531d3cbe0e32b433ead8a1f583b01f0e96c17c530a9955e7b1315b1e7a562cb166a1de36218ce4bb919727ecc7b605239752fdd841e0e1e8e799da19f663fd5e9bb645e84e75f0f8ea676867d4b143eb144f9995398ed9f2d0ffb021d62cd4db2e84917c37b3f214c2df376e0f462ea5fab17ee03998384fb11f63d03decc70e796dda1ea13bd5c15c3dc4d0cea86387d60fc17e2887f9a61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efadf21c49a857a3b843092ef202b4f7b38efb02318b964bcf53e281f029efec4798af30e0cba87f30e87bd36ed88d09deae0f17598a19d51c70ead1f86fd30d1996f4a21b3e6c6f8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbb3d39589350bf5760a61245f3f2f4ff8dc839dc1c8a5d47d3b8781e710833e4ced0cefdb39e2b5696784ee54078faf230ced8c3a7668fd08ec076556e62866cbb3cb9589350bf576096124df215e9eb01fdb158c5c4af563478087a39f676a67d88f0d786dda15a13bd5c15c1d606867d4b143eb03b01f945999a3982dcf6e5726d62cd4db2d84917c877979c27e6c77307229d58f0d000f473fcfd4ceb01f3beab5697784ee540773f528433ba38e1d5a3f0afb419995398ad9f2ec716562cd42bd3d4218c9778497a7908536d352aa1f3b0a3c1cfd3c533bc37eec16af4d7b2274a73a98abb730b433ead8a1f55b603fa48dd9f2ec756562cd42bdbd4218c937c0cb131e5f7b83914ba9e3eb16e0e1e87f98da191e5fc7bc36ed8dd09dea60ae1e636867d4b143ebc7603fa48dd9f2ec736562cd42bd7d4218c9779497273cbef605239752c7d731e0e1e87f98da191e5fc7bd36ed8bd09dea60ae1e676867d4b143ebc7613fa48dd9f2ec776562cd42bdfd4218c987e78bfd4c3c398f2717a1c5448cdde0c56ea890d88d5eecc60a89ad79ae795e09b135cf35cf2b21b6e6b9e67925c4aed45c53cd2b53f3cc79d43c731e35cfa8e62235ff6372b13bb15fa98258c798da894b1f94717c8e9635c278160be3e914c63357184f4118cf0c613c5384f12c17c6532d8c272f8c6789309e15c278e609e399298c67aa309e1a613cab85f1f40ae3592a8ca747184f97309ef9c278da85f1cc12c6b352184f56184fab309e5a613c2dc2789609e359278c6781309e26613cf5c27872c2780e08e3a913c6b35e184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc2782609e359248c678e309ee9c2781a85f14c16c69311c0930dcefd3d0afe9ea01a7c747fff7ef03dcb950f80af2a22066de738f868fc94b661fb9b754de73254c1676e8de07a56443c8a736bc467c743778cd507eb14af1e386e15c23359184fa3309ee9c278e608e359248c6792309e06613cd384f1ac12c6335b184f87309e85c278ba85f1ac17c653278ce780309e9c309e7a613c4dc2781608e359278c6799309e16613cb5c2785a85f16485f1ac14c6334b184fbb309ef9c278ba84f1f408e3592a8ca75718cf6a613c35c278a60ae399298c679e309e15c2789608e3c90be3a916c6b35c18cf14613c3384f11484f1cc15c6d3298c67b1309e35c278aa22780e30f1c43d4fe18080d8763d0fbad8250bef8fc7ef000f788cb47e0c18919778f24c3c71cfa0c80b886ddb4fdf25680e2e0befe3efb8b8722aef31d27a544ee17d69ab9978e29edbb15a406cab058d5dd23d0059781f7fb7c09553ab3d465a8fcaa9465e9ef07f4bb404239752f71ae131c7b10f99da99c7e32fc16768443e8bbac5d30a9fa13a1ef7c9c7f507144f9995398ed9f2d0dc05b1e2f96c3c7ef7361ac6a8f32b034fd83fb606239752fde331e0e1387f30b533ecc74e786d6a8dd09dea60ae9e606867d4b143eb2722623707c96a7172145a9c8ce03939ce5a50bc72990fa4905982ce9667952b136b16eaad12c248be3c2f4fd83fae0a462ea5fac793c0c371fe606a67d8279cf2dab42a4277aa83c7d7298676461d3bb47e0af64339cc2752c8ac3a8f8dd9f2d01832b166a15e410823f98eb1f214f25968332da5fab153c0c3d1cf33e91ef663835e9b0a11ba531d3cbe0619da1975ecd0fa20ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e8b78dc49a857aed4218c9779295a738efd01e8c5c4acd3b0c020fc7bc0c93eee1bcc369af4ded11ba531dccd5d30ced8c3a7668fd34ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e899dbc49a857a1d4218c9778a9727fcdd564730722935ef701a7838e66598da19ce3bdce6b5a9234277aa83b97a1b433ba38e1d5abf0df683322b7314b3e5a1675b116b16ea750a6124df202b4f71feb43318b994eac76e031e8e7e9e49f7b01f3be3b5a9334277aa83b97a86a19d51c70ead9f81fd500ef3891432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efa9f6bc49a857a5d4218c9779a95a73d9c77e80a462ea5e61dce000fc7bc0c93eee1bcc359af4d5d11ba531d3cbece32b433ead8a1f5b3b01f263af38914326b6e8c0fb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb384dcb03cddae4cac59a8d72d84917cb7f1f284cf3de80e462ea5eedb390b3c6718f4616a6778dfce90d7a6ee08dda90e1e5f430ced8c3a76687d08f683322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6a5543f36043c1cfd3c533bc37eec76af4d6b2274a73a98abb733b433ead8a1f5db613fa48dd9f2f4b832b166a15e8f1046f2e179b9878927e7f1e422b4385fb1ed7aaf2bd7bbd72cbcdf0b8c5cfd618fc748eb98e3c84b3cbd4c3c0d1e4f438416e72bb66dff3a579ee65eb3f0fe3a60e4caa95e8f91d6a372aa0178d631f1347a3c8d115a9cafd8568bf5ae3cddbd66e1fdf5c0c89553eb3c465a8fcaa946e059cfc413d727ad1f87d871c7d778c48ecb95f188ad9aabe6aab96acea979e63c6a9e398f9a675473519a335c4785e3bd142300065cfaa08cdf1538ae3d99da998ffa3eb6de6b137e1fc33187f3f57d439995398e9969dca223ebc5267d028f879621662dc673dcb4d76b531ac64d4b319f4821b3ea3c36661bfb8ee4637764bdd8a44fe0f1d07207b3164ced0cfb833b83688d295e0eea609edec9d0ce0cc4a56dd3fa9db01fca613e914266d5796ccc36f65d89c72e3e4f1e63933e81c743cb5dcc5af0b4b3d81fdc1d446b4cf1725007f3f46e867666202e6d9bd6ef86fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec67271ebb387e8fb1499fc0e3a1e5d9cc5af0b4b3387e7f4f10ad31c5cb411ddce7f730b433037169dbb47e0fec076556666556666556666556666556666556666556666556666556666556666596cd6c633f27f9d8e1ef713036e913783cb43c87590ba67686e3f7f706d11a53bc1cd4c17d7e2f433b331097b64debf7c27e5066658e62b6b19f9b78ece27c1ec6267d028f8796e7326bc1d3ce627f705f10ad31c5cb411ddce7f731b433037169dbb47e1fec8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9c6be3ff1d8ede1f83dc6267d028f8796fb99b5e0696771fcfe81205a638a97833a98a70f30b433037169dbb44ef12a81f9440a993537c68759734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426ed8d8cf4b3e76f87b768c4dfa041e0f2dcf63d682a99de1fd2f0f06d11a53bc1cd4c13c7d90a19d19884bdba6f507613f28b3324731dbd80f251fbb90f562933e81c743cb43cc5a30b533ec0f1e0ea235a67839a883fbfc61867666202e6d9bd61f86fd903666dc7f99e46287f76d528c2af76a7dcf77e56af0bdc0956bc0f74257ae05df8b5cb90e7c2f76e549e07b09b48d7c2f75e595e07b992baf07dfcb5d791df85ee1cabde07ba52bf780ef55ae3c04be57bbf2ede07b8d2bdf01bed7baf29de07b9d2bdf05bed7bbf2dde07b832b3f1b7c6f74e57bc0f726577e0ef8deeccaf782ef2daefc5cf0bdd595ef03dfdb5cf97ef0bddd951f00df3b5c7929f81e89f0bdd3959f07be77b9f283e07bb72b1f00df7b5c790af8deebca53c1f71750a6d7f7b9723df81e75e51cf8deefcad3c0f701576e00df075d793af83ee4ca8de0fbb02bcf00df475c7926f83eeacab3c0f731576e02dfc75d7936f83ee1ca73c0f749579e0bbe4fb9f23cf07dda95e783ef33aebc007c9f75e585e0fb9c2b2f02dfe75d7931f8bee0ca4bc0f74557c6fdfb97aefc10f8a85f79187cd4af3c1f7cd4afbc007cd4afbc107cd4afbc087cd4afbc187cd4afbc047c94772f051fe5ddcbc04779f772f051debd027c9477af041fe5ddabc04779f76af051debd067c9477af051fe5ddebc04779f77af051debd017c94776f041fe5dd9bc04779f766f051debd057c94776f051fe5dddbc04779f776f051debd037c94778f808ff2ee9de0a3bc7b17f89a5df9dde0bbc095df03be0b5df9bde0bbc895b19fb9d895df07be4b5cf951f0515ff87ef03dc3953f00be65aefc41f02d77e50f816f852b7f187c2b5df923e05be5ca1f055f8b2b7f0c7cadaefc71f0ad76e54f802fefca9f045f9b2b7f0a7c0557fe34f8da5df933e0eb70e5cf82afd3953f07be2e57fe3cf8ba5df90be05be3ca5f041f9dc7a99fb1c7b33d2e4907d2c8faa8cdad116d21df64684b5f90ec351dc5a26dd37a3b30d23e288c3f6361b48c6d1ea3e5e964d00cf38a9652df993a81a7838187a99de177a62eaf4ded5e9b7250e719d0ce2e867666202e6d9bd6bb2036c73e472d6add7697795ad4601d7742b3e7d3523ad2366cfe1622dad2c3dc16da36f54b3de310bbdb8b9df762637f4c4ba9e3ab1b98d73030dbedf626bfddf0f85aebb645394571f2d0a675a041526dc2d819671487fc35509edf345c97ea911e74fe22769bcbb42f91ddff5ca7f7b91cd4e989687f5f906cfb7b3d9e5e8fd9ee9386a6610e86e321cc811e8f83d6f3a05d6f8c763da01dd5c1f35f0b93766b3c1e5a6f011ebac6e9021f5d2b103f5e67b58e03b7dfef75457093af1b185b22180bc93386d73a2d1e23ad1780917c6b80a79b49337f5f2ff3f4c1f3729d57873e5b037556c3b9311b51d71e774b33c3eda2efe07f0c92edd3eb18f4c2f18100f4093c0d03d08bda59cbc03335181e23383b3478a6ff9681cb07fa8f6400adc6c3c4d74c4433aac087e5ea085f108c1c0ac121591a0ac121d92a4f161c82a1faf6ab946d160d370c9c3c3ef4cc5303a70e9fb9fbf4d0c091bd83b72075ad478fa4712d4052f4d13239181eb4e90b929d8ca9f362954a9ec9f03a09dea73af9a7b7b431b5333ce94df1da54e7b52907756ae1bd290cedcc405cda36ad4f89889d6047146a3175145a4c8de0993ace5ae0c037f9f048a5f771f2a4ca6b0b1ed1d8263fcf136d10055c0adbcf3838fb9e3dd86b5d632605c33b9b7a4f7b456b77821d31b5672d3b226a47406d17644738ed88a63da9d9114b3b42694724ed08a41d71b4238c7644d18e20da11433b42d81c144700ed889f1de1b3237a9700db5781d77eabb667483b226747e0ec889bbdb2b25700f66ac45e7ddb2b453bfa61af10ec374b3bca60cfb6f64ac69ea5ed99d55e29da2b447b456faf70ed2cd506631b9dd69b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1cb82e2e8fae5c6ae3076a5b1671abbcad8d5c6ae3176adb1eb8c5d6fec0663371abbc9d8cdc60e1aeb3776c8d86163478c0d183b6aec1663c78c1d37f62c63b706c53b744e1a3b656cd0d86963b7193b63ec6c509c31b333647646ccce80d9192f3bc36567b4ec0c969db1b233547646cace40dd1f146798ec4c919d19b2b3027616c08efadb51fe1706c5517c3b6aff92a0382a6f47e1eda8bb1d65b7a3ea7614dd8e9adb51723b2a6e47c1eda8b71de5b6a3da7614db8e5adb516a3b2a6d47a1eda8b31d657e24288e22db51633b4a6c4785ed28b01df5b5a3bc8f06c5515c3b6a6b4769eda8ac1d85b5a3ae7694d58eaada51543b6a6a4749eda8a81d05b5a39e7694d38e6ada514c3b6a694729eda8e4978c3d66ecaf8cfdb5b1bf31f6b7c6feced8df1bfbb2b1af18fb0763ff68ec9f82625efeb3b17f31f63563ff6aecdf8c7dddd8bf1bfb86b16f1afb0f63df32f6b8b16f1bfb8eb1ef1afb9eb1ef1bfb81b11f1afb91b1ff34f663633f31f653633f33f67363bf30f64b63bf32f66b634f187bd2d86f8cfdd6d8ef8cfdded853c1f0ec0676227f702b34d2de3f343470f2f450f3d060f3c9db4f0c1d3f7de2eee63b8f0f1d6b1ebc63e0ccd1138377e287dfe7ba2d9a46d874e64cffddcdc74f1d19b8ab79f0f6a1e6c1a3cd87066f3f75e42c7ee8cbee430bcf8dd87fe4487cb06f553d0dd2ef8e31e82fdde768826657e9b63d3116419e1acb8766568fad4197bab30e7d7bbfa278b5db7cf6c4e05073bef994f9db7fc27c66e0486b33be77d6887c76a8f9ec50ff99a1e6a367064f36b7b5e276af9d328646d4348de143ad4da36f79f0ffd2fd24f2250a0400", + "bytecode": "0x1f8b08000000000000ffed9d777c1cc775c7f7d0580e471024c15ea046b3828743071bd83b654ab27a214882222d92a048a859962559927befdd728be5de7bac543b8913278e1dcbbd57c945f927713ec9e7e34f66f6e6193f0c77cf38681ff816f7f6f379bcd987b97ddff9ed9bd9bd99bde39341106482e2566deca2e0dc8dfedee75ef34f6d6b4df058794ece4c4a38ab52c2599d12ce9a9470d6a684b32e259c9352c23939259c5312e4b46c55c1c82d69dea90cba26cd984d99a6f529d03497324da7a540d386201d63d4f4947036a68473464a3867a68473564a389b52c2393b259c7352c23937259cf352c2393f259c0b52c2b930259c8b52c2b938259c4b52c2d99c12ce0b52c279614a382f4a09e7c529e1bc2441ce95c0b9d4bd3ecdbd2e73afcbddeb0af74aef59e55e57bb36d6b8fd16636b2c9bb156ef6f05636dc6da8d75787feb34d665acdb588ffb5bb3fb5bafb1b5c6d6195b6f6c83b18d4e874dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d8d38d1d307699b1cb8d5d61ec19c6ae347695b1ab8d5de3b15c6bec3a63d71bbbc1d88dc66e3276d058bfb143c60e1b3b626cc0d85163371b3b66ecb8b1671abbc5d80963278d9d323668ecb4b15b8d9d3176d6d890b1db8cdd6eec0e63771abbcbd3ec59c6ee36f66c63f7789ccf3176afb1fb8cdd6fecb9c61e30f6a0b1878c3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b1d0b7584b7197bbbb1878dbdc3d83b8dbdcbd8bb8dbdc7d85f187bafb1478cbdcfd8fb8d7dc0d8078d7dc8d8878d7dc4d8478d7dccd8c78d7dc2d8278d7dcad8a78d7dc6d8678d7dced8e78d7dc1d85f1afba2b1478dfd95b1bf36f637c6fed6d8df19fb7b635f32f66563ff60ec1f8dfd93b1af18fb6763ff62ecab9ee6ff6aecdf8c7dcdd8bf3bdfd7ddeb375c5d9a17fb0f63df74e5c7dcebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef571f7fa847bfd8d7bfdad7bfd9d7bfdbd7b7dd2d8d54dc5f2e46078eb0b121aa3da8fe6ed9a0a89bf3418b9592daadddfe8b5d9f96bdc3ebd9276b56ebfd6f3d7b9fd3aef3893ddfe64cfdfe8f61b3dff4cb73fd3f337b9fd26cf3fc7edcff1fc17bbfd8bc19f0d60ced5f9adafdab932e0a37cad025fadf35583af8e0e07be49ce570b3e3abf75e09be27c93c037d5f926832feb7c53484b63f5ced71724952bf97e7bdc5cd2c775eb50d392e73d6c8fdbc0c43b3d79de017bdc46065e9b1f33dcb1a643decc74be46f0cd72be19e07343d09ffa9cf5cd76be59e09be37c4de09beb7cb3c137cff9e6806fbef3cd05df02e79b07be85ce371f7c8b9c6f01f8163bdf42f02d71be45e06b76bec5e0bbc0f99680ef42e76b061f3de37201f82e76be0bc17789f35d043e1a6b2f061fdd1b5ee27c769c989c81f7383f8d51e17b687c06df321a9bc1b79cc665f0ada031197c2b2136f956c1b842bed5ce476394fd5baf2bf70549f58942d827d6267d5c73647bdcf5c91f375cb7db100c6bdd0771d682561b5d39c167835a3176c619c5217f0d9477415daa477ad07586d8edf5649d2b6f2cf1be5eef7d39a8b32ea2fd7d41b2ed5feff1acf7986ba1fd3c39db56d09c1df55676ce5e0575fddca37b9e8998b37b818321673b356747bd959db30350d7cf3dbaef9d88397b2d7030e46c3f4fce16f29ab3c539b22088ce3dfaec331173f61870249fb31d9ab3a3dfcaced9fba1ae9f7bf4f97722e6ecedc0917cce76f5ebbdc1a8b7b273f6e550d7cf3d9a8b998839fb207030e4ec808eb3a3decaced9b7425d3ff7685e7022e6ecab8023f99ced61cad936cdd9a0b8de1904d1b94773d41331671f068ee473f6b0cecf8e7e2b3b673f0775fddca3f5928998b31f7665bbcef075b7ceb0107cdf70be45c09b7c6e1f6967caed82e676f139902088ce515abb9b88b9fda82bdb3c7e0c9e3d20dfb79cef02f07ddbf92e04df779cef226817431fe8d73e30eaadec3ef03da8ebe732ad234fc43ef035e060c8d9c39ab3a3decaced9c7a1ae9f7bf44cc344ccd91f020743ce0e68ce8e7a2b3b67ff0075fddc5be6ca133167e9b9527bbff06377bfb0027c3f71be95e0fba9f3ad02dfcf9c6f35f87eee7c2de0fb85f3ad01df2f9d2f0fbe5f395f2bf87eed7c05f03dee7c6de07bc2f9dac1f71be7eb00df6f9daf137cbf73be2ef0fddef9bac1f7a4f3f5389f5defa267afbee27cf6dc92467d41b2e7969eb1a463d3feaa7188dde0c56e18c7d88d5eecc688d8ab19626721066d196fbf0fcaab7979f2b960e4f73f28d69ae463b5d9b6b704a36ffb1ae0c933b43d0b3146c393079ed6e479c2677d0bc91f373cc72d9ea65988d502ed6a6368570662d1b1699fe2e5c087e3775b04637bf28c850cc4a263d37e3b30920faf27745da7fe63af874b33c3bc0c7d29bc27a278f4db5fc4b106fc54e7bf670db3ad706cf5f077bcb6b67a3ea6bc0cf38262d1b1699fe2d5437b5ac79fb1305ac6bcc7c835466420161ddb8f8dfd7df5f86b36aaf39a03df7918930a631d93ea816d3cee53e2ceb594d81cd7ab0cc4a0b18d342f809feacc765f48b063db0e187719fa5fa1dcfb371c0f92cfe3421efbf56878da8087a3ef33f5d73c5ef7ff18249b6b1d9e56ad9e5639a8d30efa7530e857ea3e84e229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c667cfe02d737a9de2a218ce42b000fc73c7ff8fb51ee58747cbbaef36d58d7497edda290c7354b7ac670b9d7e61aa8f34466b8eef7613ddd5f1bc435cd55bcda8dea398bfae0dcb558ce35c4b875e0a8f5cbe6c462170e73adb7d9df50b1bf43d6e2e9ba2a425386e75446689af134c5e714577a3c364fe7550fb371acfd95bb16895a5139c9b53d7cc680f7bc14c70fca85aa60e4f881d799cec4638f5cc3a4f5f24e2f760dd4f99fccf0b9a16751e9ff39f49f79b275babc63d37b9683bfcb3b76837b2f71d47ac76f81f7529dff8331f56d55c19f34e378fe03c7e500da8a5b1f9471dd3cf9eb70711dbfad0c9e0ee0e1186798ee37f2d807925ec7eff2b48aba8fa13a9da05f17837e51f7a2b44ff194599995599995599995599995599995599995599995599995599995599995593e337e579458b350af2084719c9e7d08d733e8f75fe8f8765de72555c371b9d7e168cd6985d7e61aa8f3d5aae1baaf70e5fae0dce71de2ce25c37a5ec97349f1eaa13db816c4f57dee768fa73d420b2a372716bbb88e9fbcc6c3ebf86d9eae85084db9fa2baeb1a2a6d85f5b3d1e5c1bad0fce7db6240bc7198f6787e2f282e2615f6a071f95f1fbd11ce719af25fe733d140fd7af1f71da36045ce7be90e71c37baa14d7dc1b9f95d03753e0463df475c199fe1c067471e8df83b6da5d6a9493f96dfb2cb17d77dd702671fc4c1d8eb8035a1d8ad183be38ce290bf06ca5fac1aae4bf5480fd29ad86d1fa1df044376ff7daddefb7250a727a2fd7d41b2edeff5787a3d667b4e3e0e79f6285cffb9c6a49e188d9683465407ef83b89ec9f3c748fff9467c6eafceab83f72c54e7cb3046c53d3f1af5cc21d7752cee99c3a87be30e60f4dbe83fe759e9cf693d06e345d2cf693d063984cf6905def157c0f189ab2e88bfb6509def7ac7f7efc9e93df81c18d5f9018c170dee99c5fae0dcfb6f7c666a3c3e5fc53d274df1f0be06fbf69f6bbb65ee86fa7d0932634e200bde27509d5f79e7ac2b867b4dc47b9f88792f69b5da95f1f38baf9fd5a107ded397880ec53edfebb585f2ba07da4275fed3bb074cfebea5780f987c5b47de93d038d01ed156aaf35fd0d7fe00f778749ef073475df5b97fa7add43d20e967db3cdebf0f8cb125fc3e706df5705dff777e49eb727f1fb8d37b9fc4df07fe5fc8b33a780e9d6bac5e17a3d10ad088eae07783e83a82bfe51b35d771be3e4fe78273e709f03ac973df147dfdf3e7d5a2ee1156781ae33dc22cc7dce074f6ebfaf38574bd4cf2b961fcae440bc4c5ef4ab430e99907ddfa601fef0bce67ec3c53ecb8df9cce8f43ecb8df9c1e8fd88d5eecc6718cad9aabe6923467f84de4f0fb67f89ba5762b755f4a0c39785f550a18ab53c0589302c6da1430d6a58071520a1827a780714a0a18a7a680310b8ce7f3dacea04f61acfa709daf52f71a187b359316e5fcff1dccff974ac97b1f8ccdf0992ed46275307a2df0731ec76f3f94fb7fbd1003fedf053352c03833058cb352c0d89402c6d929609c9302c6b929609c9702c6f929605c9002c68529605c9402c6c529605c9202c6e614305e9002c60b53c078510a182f4e01e32529605caa8c8930aee4652c8c95d1f270fc9f7f4fe5ff1c63e0c9473d73caf4dd93b2ffbf35e6df276d1debefc6e1b325bcff27dc53fb6d3b8e6747cafd6dbb52ffdf2a136361ac8c5ccf02e17347a3e1897a3ea89597b1305646aeefbfe077f446c3d3099a754468c6c058182b23d7b372e53ecb89cff4774668c6c058182b233e579d204fa85957193cdda0595784660c8c85b132723d979c8518a3e1e901cdba233463602c8c9591e9bb6da1663d65f0e077c07a223463602c8c95d1f2ac65d2acb70c9eb5a0596f846692189127e9dfc9ee8d88c5f19dc172db4e0cc83825058c5353c088cf49708c5fa59e93e8e5d5a730567db8ce57a9e7243036c3f763422df0fb107f4e8bf5bc3c259f93c0d81b98b4c0efabfc392d36000fc7f767b21063343cc49083f7cd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1b32ac3bd62c9cf2f1b2678ecb8cf2a133d76dce792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d73fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e233886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430edeb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6610c57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1fb5a53c0d89702c68dbc8c85b1325a9eedc9f3849a6d2b83673b6846ef6be5652c8c95d1f2ec489e27d46c7b193c3b40b3ed119a313016c6ca68797626cf136ab6a30c9e9da0d98e08cd18180b6365b43cbb92e70935db5906cf2ed06c6784660c8c85b1325a9eddc9f3849aed2a83673768b62b423306c6c258192dcf9ee47942cd7697c1b30734db1da119036361ac8c96676ff23ca1667bcae0d90b9aed89d08c81b1305646cbb32f799e50b3bd65f0ec03cdf646682695716d0a1837a6809159c7c258192dcf7e269e7d65f0ec079e4b9978f697c17329f03c3d799e30a72e2d83871872f0beb52960dc980246d5517594c4a83a568e8ecaa88cca581e635f0a18f55c2ba3544686cf5725bf8b74e9048fdde0c56ea890d871df459ae8b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cd7349b10f241fbb50ee6fcc1c001e8edfbc616a67de1ef73277ac3f26a89fd5ea724fab4b3dad7250e732d0ef7206fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85730b53d6eacbf6282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3f7edf4fba7f618cf70e51ab78face4a73a574f2abe3604da8738626b1fd26b4525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826797309eedc278ba85f17408e32908e3592c8c67ae309e19c2783609e399228c67b9309e6a613c79613c4b84f1ac10c6334f18cf783cdf5c0ecf4c613c9b85f14c15c653238c678d309eddc2787a85f1ec10c6d3238c67ab309e4e613c4b85f1b409e36911c6335f18cf2c613c2b85f16485f1d40ae3592d8c67af309e75c2789609e359208ca749184fbd309e9c309e3a613cfb84f1ec11c6b35e18cf4e613cdb84f17409e3d9228ca75d18cf2a613c0b85f1cc16c6334d184f83309e49c278f60be359248c678e309ee9c2781a85f16c10c63359184f46004f3638f737c9b2f0f703e0abf2de6bc7cf9ea6e1bf5fe9fc55f09eab5cb93ae2d857828fbe1b7e55c47b51a72ba12d7dae9c7f6a5ba813c6ea837d8a570f1c5709e1992c8c6783309e46613cd385f1cc11c6b34818cf7e613c9384f13408e399268c67b6309e85c2785609e36917c6b345184f97309e6dc278760ae3592f8c678f309e7dc278ea84f1e484f1d40be36912c6b34018cf32613ceb84f1ec15c6b35a184fad309eac309e95c2786609e3992f8ca745184f9b309ea5c2783a85f16c15c6d3238c6787309e5e613cbb85f1ac11c653238c67aa309ecdc278660ae339208c679e309e15c2789608e3c90be3a916c6b35c18cf14613c9b84f1cc10c6335718cf62613c05613c1dc278ba85f16c17c6b34b184f55040fc3ff7f19f2d0f36b746cda3f202436c37908ffdfcfab99da748d3b56ad3b2ef153bc1aa873c85d88edf328f85ee2f29f37c47bf56b40a36b98da42e723e39d1fe6d8057cae320086c0d32788e0e1781e95a99d23f230c1ff7f366fb5bad6d3ca3f7739a87335e8772d837e51b94dfb142f8dcc96879e1d25d62cd4db2084917c57f0f284fd764330722bd56faf051e8e318ca99d61ffbace6bd38608dda90ee6ea750ced8cea3bb47f1d9c87b4315b1efa6c48ac59a8b7490823f9aee1e509fbd7a660e456aa7f5d073c1ce30f533bc3fe75bdd7a64d11ba531dccd5eb19da19d57768ff7a380f6963b63c34374eac59a8b7590823f9aee5e569cf429b692bd5bfae071e8ef187a99d61ffbac16bd3e608dda90ee6ea0d0ced8cea3bb47f039c076556e62866cb43cf9c136b16ea6d11c248beeb5879daf35968336da5c6b11b8087639c67d23d1cc76ef4dab4254277aa83b97a23433ba3fa0eeddf1811bb3948568b9b46a1c54d113c378db31614af5ce6ab53c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc72c4167cb43bfd947ac59a8b7550823f9aee7e509bf17b43518b965bcfd3e28df043c3730e8c3d4cef019f2835e9bb646e84e75b07f1d64686754dfa1fd83701e0e96c17c630a9955e7b1315b1efabf1688350bf5b6096124df0dbc3ce138b62d18b9951ac70e020fc738cfd4ce701cebf7dab42d4277aa83fdab9fa19d517d87f6299e322b731cb3e5a1dfcc22d62cd4db2e84917c37b1f214c2ef376e0f466ea5c6b17ee03998384f711c63d03d1cc70e796dda1ea13bd5c15c3dc4d0cea8be43fb87e03c94c37c630a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d2d0ffddf84c49a857a3b843092ef202b4f5bb8eeb02318b965bcfd3e281f029efec4798aeb0e0cba87eb0e87bd36ed88d09dea60ff3accd0cea8be43fb87e13c4c74e61b53c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f2ec746562cd42bd9d4218c9d7cfcb13feeec1ce60e456eab99dc3c07388411fa67686cfed1cf1dab4334277aa83fdeb08433ba3fa0eed1f81f3a0ccca1cc56c7976b932b166a1de2e218ce43bc4cb138e63bb82915ba971ec08f0708cf34ced0cc7b101af4dbb2274a73a98ab030ced8cea3bb43f00e7419995398ad9f2ec766562cd42bddd4218c9779897271cc7760723b752e3d800f0708cf34ced0cc7b1a35e9b7647e84e7530578f32b433aaefd0fe51380fcaaccc51cc96678f2b136b16eaed11c248be23bc3c852cb499b652e3d851e0e118e799da198e63377b6dda13a13bd5c15cbd99a19d517d87f66f86f3903666cbb3d79589350bf5f60a6124df002f4fd8bff60623b752fdeb66e0e1187f98da19f6af635e9bf646e84e7530578f31b433aaefd0fe31380f6963b63cfb5c9958b3506f9f1046f21de5e509fbd7be60e456aa7f1d031e8ef187a99d61ff3aeeb5695f84ee540773f538433ba3fa0eed1f87f3903666cbb3df9589350bf5f60b61241f5e2ff633f1e43c9e5c84161331768317bba14262377ab11b2b24b6e6b9e67925c4d63cd73caf84d89ae79ae79510bb52734d35af4ccd33e751f3cc79d43ca39a8bd4fc8fc9c5eec071a50a621d636a276e7d50c6f939daba85f17408e32908e3592c8c67ae309e19c278a608e3592e8ca75a184f5e18cf12613c2b84f1cc13c6335318cf54613c35c278d608e3e915c6d3238ca75318cf52613c6dc2785a84f1cc17c6334b18cf4a613c59613cb5c278560be359278c6799309e05c2789a84f1d40be3c909e3a913c6b35e184f97309e76613cab84f12c14c6335b18cf34613c0dc2782609e359248ce780309e39c278a60be36914c63359184f46004f3638f7fb28f87d826af0d1f3fdfbc1f74c573e00beaa8818749ce3e0a3f9533a861dffb6369dcb5005efb92582eb9911f128ce2d11ef1d0fdd31561fec53bc7ae0b84508cf64613c8dc278a60be399238ce780309e45c2782609e36910c6334d18cf6c613c0b85f1ac12c6d32e8ca74b18cf7a613c75c27872c278ea85f13409e359208c6799309e75c278560be3a915c69315c6b35218cf2c613cf385f1b408e36913c6b354184fa7309e1e613cbdc278d608e3a911c6335518cf4c613cf384f1ac10c6b344184f5e184fb5309ee5c278a608e399218c67ae309ec5c2780ac2783a84f1740be3a98ae039c0c413f77b0a0704c4b6fb79d0c56e59f8fb787c0ff080c748fbc78011798927cfc413f71b147901b16dfbe9b304ad7965e1eff83d2eae9cca7b8cb41f9553f89cdc1a269eb8dfed582320b6d582e62ee919802cfc1dbfb7c095536b3c46da8fcaa9465e9ef0ff96581d8cdc4a3d6b847d8ee31c32b5338ffd2fc1dfd088fc2dead59e56f81baae3f1dc63dc7840f1945999e3982d0fcd3d132b5ecfc6e37b93a3618cbabe32f084e3634b30722b353e1e031e8eeb07533bc371ec84d7a69608dda90ee6ea09867646f51dda3f1111bb3948568b93a3d0e26404cfc971d682e295cb7c2085cc1274b63cab5c9958b3506f951046f2e57979c2f1715530722b353e9e041e8eeb07533bc331e194d7a65511ba531dec5fa718da19d57768ff149c8772984fa49059751e1bb3e5a1395262cd42bd821046f21d63e529e4b3d066da4a8d63a78087639c67d23d1cc706bd36152274a73ad8bf0619da19d577687f10ce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b63cf45d4262cd42bd36218ce43bc9ca535c77680b466ea5d61d068187635d8649f770dde1b4d7a6b608dda90ee6ea69867646f51dda3f0de7419995599995599995599995599995599995599995599995599995599995599965335b1efa4d6962cd42bd76218ce43bc5cb137e6fab3d18b9955a77380d3c1ceb324ced0cd71d6ef5dad41ea13bd5c15cbd95a19d517d87f66f85f3a0ccca1cc56c79e8b7a488350bf53a8430926f9095a7b87eda118cdc4a8d63b7020fc738cfa47b388e9df1dad411a13bd5c15c3dc3d0cea8be43fb67e03c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece9687fe8f3362cd42bd4e218ce43bcdcad316ae3b740623b752eb0e678087635d8649f770dde1acd7a6ce08dda90ef6afb30ced8cea3bb47f16cec344673e914266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b96a7cb9589350bf5ba843092ef565e9ef0770fba82915ba9e776ce02cf19067d98da193eb733e4b5a92b4277aa83fd6b88a19d517d87f687e03c28b33247315b9e6e5726d62cd4eb16c248be33bc3c852cb499b652e3d810f0708cf34ced0cc7b1dbbc367547e84e7530576f63686754dfa1fddbe03ca48dd9f2f4b832b166a15e8f1046f2e175b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701f15cef7528c001870eb83327e56e0b8f7646a673eeaf3d87aaf4df8790ce71cced7e70d6556e63866a6798bf6ac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986decdb938fdd9ef562933e81c743dbedcc5a30b5331c0fee08a235a67839a883797a07433b3310978e4dfb77c0792887f9440a9955e7b131dbd877261ebbf87bf2189bf4093c1edaee64d682a79dc5f1e0ae205a638a97833a98a77731b4330371e9d8b47f179c076556666556666556666556666556666556666556666556666556666556666596cd6c633f2bf1d8c5f97b8c4dfa041e0f6dcf62d682a79dc5f9fbbb83688d295e0eeae039bf9ba19d19884bc7a6fdbbe13c28b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb36c661bfbd9c9c70ebf8f83b1499fc0e3a1edd9cc5a30b5339cbfbf2788d698e2e5a00e9ef37b18da9981b8746cdabf07ce83322b7314b38dfd9cc46317d7f33036e913783cb43d87590b9e7616c7837b83688d295e0eeae039bf97a19d19884bc7a6fd7be13c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece36f67d89c76e0be7ef3136e913783cb4ddc7ac054f3b8bf3f7f707d11a53bc1cd4c13cbd9fa19d19884bc7a67d8a5709cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3c67e6ef2b1c3efb3636cd227f078687b2eb3164ced0c9f7f792088d698e2e5a00ee6e9030cedcc405c3a36ed3f00e7419995398ad9c67e30f9d885ac179bf4093c1eda1e64d682a99de178f05010ad31c5cb411d3ce70f31b4330371e9d8b4ff109c87b431e3f9cb24173b7c6e936254b957eb7b9e2b5783eff9ae5c03be17b8722df85ee8ca75e07b912b4f02df8ba16de47b892baf04df4b5d793df85ee6caebc0f77257ee05df2b5cb9077caf74e521f0bdca956f03dfab5df976f0bdc695ef00df6b5df94ef0bdce95ef02dfeb5df959e07b832bdf0dbe37baf2b3c1f72657be077c6f76e5e780ef2dae7c2ff8deeacaf781ef6dae7c3ff8deeeca4bc1f77084ef1daefc5cf0bdd3951f00dfbb5cf900f8deedca53c0f71e579e0abebf8032bdbed795ebc1f7882be7c0f73e579e06bef7bb7203f83ee0cad3c1f741576e04df875c7906f83eecca33c1f711579e05be8fba7213f83ee6cab3c1f771579e03be4fb8f25cf07dd295e781ef53ae3c1f7c9f76e505e0fb8c2b2f04df675d7911f83ee7ca8bc1f779575e02be2fb8329edfbf74e507c147e3ca43e0a371e579e0a371e5f9e0a371e505e0a371e585e0a371e545e0a371e5c5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828efde083ecabb37818ff2eecde0a3bc7b0bf828efde0a3ecabbb7818ff2eeede0a3bc7b187c9477ef001fe5dd3bc1d7eccaef02df05aefc6ef05de8caef01df45ae8ce3ccc5aefc5ef05de2ca8f808fc6c2f781ef69aefc7ef02d73e50f806fb92b7f107c2b5cf943e05be9ca1f06df2a57fe08f856bbf247c1d7e2ca1f03df1a57fe38f8f2aefc09f0b5baf227c15770e54f81afcd953f0dbe7657fe0cf83a5cf9b3e0eb74e5cf81afcb953f0fbe6e57fe02f8e83a4ee38cedcfb65f920ea491f5519b5b22da42bec9d096be20d97b3a8a45c7a6fd3660a47350187fc6c268195b3d46cbd3c1a019e6156da53e3375004f3b030f533bc3cf4c9d5e9bdabc36e5a0ced3a09d9d0cedcc405c3a36ed77426c8e738e5ad4bae32ef3b4a8813a397741b3d7d3523ad2316cfe1622dad2c3dc163a368d4b3de310bbcb8b9df762e3784c5ba9fed505ccdd0cccf6b8bdc91f37ec5f6bddb128a7284e1edab40e3448aa4d183be38ce290bf06ca17360dd7a57aa4075dbf88dde6329d4b64f7dfd7e1bd2f07757a22dadf1724dbfe5e8fa7d763b6e7644ed33007437f0873a0c7e3a0fd3c68d71ba35d0f684775f0fa5760d2aedbe3e9f6625b1ebac7e9041fdd2b103fde67b58c03b73fee75467093af0b18a3ee755a93672c79afd30a8ce4eb069e2e26cdfc73bdccd307afcb755e1d7a6f0dd4e9826b6336a2aeed774b33c3eda2cfe07f0c921dd3eb18f4c2f98100f4093c0d03d08bda59cbc03335189e23383b3478a6ffe681cb06fa8f6400adc6c3c4d74c4433aac087e5ea089fdd702a04a764692a04a764e9bd38254bc7a5faf6a3946d164d370c9c3c3ef48c5303a70e9fb9ebf4d0c091bd833723351d1d7dd550ae8af1d744f8689b1c0c4fdaf405c92ec6d479b14a25cf64789d943c4f2b533bc38bde14af4d755e9b7250a716fe3685a19d19884bc7a6fd2911b1131c88422da68e428ba9113c53c7590b9cf8261ff654fa3b2e9e54796dc11e8d6df2f33cd10651c0a570fc8c83b37fb39dbdd6356652307cb269f4b477b4f624d819537bd5b233a27606d40e417686d3ce68da8b9a9db1b433947646d2ce40da19473bc3686714ed0ca29d31b43384cd417106d0cef8d9193e3ba37709b07d0578eda76a7b85b433727606ceceb8d93b2bfb89cdde8dd8bb6f7ba768ef0eec5d81fd64696719ecd5d6dec9d8abb4bdb2da3b457b8768efe8ed1dae5da5da606ca3d37a93b1cdc6b618db6a6c9bb1edc67618db696c97b1ddc6f618db6b6c9fb1fdc62e35f6f4a038bb7e99b1cb8d5d61ec19c6ae347695b1ab8d5d63ec5a63d719bbded80dc66e347693b183c6fa8d1d3276d8d8116303c68e1abbd9d83163c78d3dd3d82d41f1099d93c64e191b3476dad8adc6ce183b1b1457ccec0a995d11b32b6076c5cbae70d9152dbb826557acec0a955d91b22b50f705c51526bb52645786ecaa805d05b0b3fe7696ff05417116dfcedabf3828cecadb59783beb6e67d9edacba9d45b7b3e67696dcce8adb59703beb6d67b9edacb69dc5b6b3d67696dace4adb59683beb6c67991f0e8ab3c876d6d8ce12db59613b0b6c677ded2cef23417116d7cedada595a3b2b6b6761edacab9d65b5b3aa7616d5ce9ada59523b2b6a6741edaca79de5b4b39a7616d3ce5ada594a3b2bf945638f1afb2b637f6dec6f8cfdadb1bf33f6f7c6be64eccbc6fec1d83f1afba7a09897ff6cec5f8c7dd5d8bf1afb37635f33f6efc6be6eec1bc6fec3d8378d3d66ec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec71634f18fb8db1df1afb9db1df1b7b32185eddc041e40f6e8766dafb8786064e9e1e6a1e1a6c3e79db89a1e3a74fdcd57cc7f1a163cd83b70f9c397a62f00e7cf37bddb045cb089bce9ce9bfabf9f8a9230377360fde36d43c78b4f9d0e06da78e9cc5377dc9bd69e1b911fb8f1c890ff6cdaaa740fa9d3106fda57b1f2dd0ec2addb6c7c722c8936379d3cceab135e82a77d5a14fef9717ef769bcf9e181c6ace379f32fff69f30ef1938d2d28c7f3b6b443e3bd47c76a8ffcc50f3d13383279b5b5bf0b8fd53c6d088faa631bca9b369f42d0ffe1fb379eca96d0b0400", "isInternal": false } ], - "packedBytecode": "0x000000028df71de500000047d81f8b08000000000000ffed9d779c14c5baf77b6141647645ccd9c5848ae232647681c19c30a38888b02c2b28b0443163961ccc19094ace02028a80184ecec993f4783ce9de7bcef9dc3fee7bef1b7c6fd74c3d777f5b542f3b6bd7f09b9deacfa776aa9fadeee75bbf7eba3a5577fd330882a22033b50cd319c1fe93fc3fa57fcbbfd9d425c67595bbe42cca13ce1679c2d9324f388bf384b3559e70b6ce13ce43f284b34d9e701e1a23a7626b11d49fe2e66deb40d7b8191379a669491e685a9a679a1e96079ab60bf2a38d3a3c4f38dbe709e71179c279649e701e95279c47e709e73179c2796c9e701e97279cc7e709e70979c279629e709e94279c27e709e72979c2796a9e7096e50967873ce13c2d4f384fcf13ce33f284f3cc3ce13c2b46ce4ec0d951ff9ead7fcfd1bfe7ea5f297b9efe3d5fff76d6752cd6f31728ae30a9873449e37f5dc3d42d4cddc3d4c3f85fcf30f50a53ef30f5d1ff2bd3ffab08536598fa86a95f98fa6b0d0684e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334304cd784e9da305d17a6ebc37443986e0cd34d611a14a69bc3744b980687e9d6300d31586e0bd3d030dd1ea66161ba234cc3c334224c55611a19a6ea308d0a534d98ee0cd3e8308d09d35d61ba3b4c63c3342e4ce3c3541ba609619a18a649619a1ca629619a1aa67bc2342d4cf786e9be30dd6f68f640981e0cd343617ad8e09c1ea647c2f468981e0bd3e3617a224c4f86e9a9303d1da619619a19a659619a1da639619a1ba679619a1fa605615a18a667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c2f46a985e0bd3eb617a43b3c88eb0284c6f8669719896846969989685e9ad30bd1da6e5615a11a695615a15a6d5615a13a6b5615a17a6f561da10a68d61da14a6cd617a274c5bc2b4354cdbc2f46e98b6876947987686e9bd30bd1fa65d61fa204cbbc3b4274c7bc3f46198f685e9a3307d1ca64fc2f46998be15a66f87e93b61fa6e98be17a6ef1b9aff204c3f0cd38fc2f4636dfb89fefda92e2bf7ef7e16a69febfc2ff4ef2ff5efaff4ef67c632bf0ed36f0cdb6fc3f43bc3f6fb307daef35fe8df3fe8df2ff5ef1ff5ef57faf74ffaf7cffaf72ffaf7affaf76ffaf75ff4efbfeadf7fd3bf7fd7bfffd0bfff0cd3e60e997c9ba06e4a0531b551dd6ad2cf7e44fc8e41fd4969d152ff4f7ecbb4bd58cfcbaf68d74acfb732ecadf57c6b633d6df47c1bc3de5ecfb737ec47eaf9230dfbd17afe68c37eac9e3fd6b09fa1e7cf007b22807bc3daae6c2db5a9086c12af2dc0d64adb5a82adb5ac0e6c87685b2bb0c9f66d0db643b5ed10b0b5d5b636604b68dba1a265984ab42d15c4152be523d47a4be35eaf7e5e7658fcbc23d57adb39e23d3c7ede516abded1df0aaf83842afeb70889b23b5ad3dd88ed2b623c076b4b61d09b663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ad4cdb4e019b6e728353c1769ab69581ed746deb00b633b4ed34b09da96da783ed2c6d3b036cd2fe9e0936395f3c4bdb54db7168112ca3edd26ea59791361b6ce7487b0db673a5ad065b2769a7c1761ef816dbf9d0d688adb3b649bba5fed747e753415cfb49b246adb722eef5866b56ebed1bff7ad3cf1cfb05755aa7c04f0568d55fe763ecd7d4057d17e9247ec45e0cf92ba1ac94133de4d823ecea1853a9f3fd1b58ae8fb15c2994a9b4d43f15c45bffbe064f5f83b915e4ddc46cd7ae3e661b3d651db383a1ac197b721ed41c637620703888d99e3e661b3d651db33550d68c3d39176e8e317b1b703888d92a37319b2cf7319bb96f1604f6d893eba1e618b3638023fe98edee63b6f153d631fb189435634fae899b63cc4e038ef863b667953f3768f49475cc2e80b266ecc9fd99e618b34f02878398adf1ed6ca3a7ac63f60d286bc69edc2b6c8e31fb2c70c41fb3bd1dc56c571fb341e6196810d8634fee5b37c7985d0c1cf1c7ec487f7fb6f153d631bb03ca9ab127cf509a63ccaed779f59ce127fa39c34960fba9b69d0cbcf1c776757747b19df4b19de91b1204f61895e779cd31b63fd07915c7bf80fe0862fba5b67500dbafb4ed34b07da66da743bd1cec03557e1f68f494f53ef01b286bc6b23c5b6e8efbc08f80c341cc56fb986df49475ccfe0dca9ab127fd1c9a63ccfe1e381cc46c8d8fd9464f59c7ec7f425933f6ced6f9e618b3d2d7549d2f7ca1cf17ce05db1fb4ad13d8bed4b6f3c0f6476d3b1f6c5f695b67b0fd49db2e00db9fb5ad1c6c7fd1b62e60fbabb625c1f6376deb0ab67fd1b66e60fb576deb0eb67fd3b61e60fbbbb6f504db3fb4ad17d8fea96dbdb54d3def92be5772deda06f85341bcdb56fa5dcaba65be4b0e7cb7337cb7cba1eff686eff616df4907be13e043a622633e05f9a45b9ef252e0415fdde2f7d555d5bd6bd0f8ba77039eee0eea9e001f8de1e90e3c3de2e749f7ffed19ff7ad3dbb8aba169027c75857af57250af22f025eb9679f1570a366c5b7b59187bc7cf982c025fb26e99ef0d8c62c3b65edeb992fd471d0f3b16d5f13ad897d2e744e24fbe5b261cddc02e65aee850c7d649b395c0fff1b8d7c3b0398acb745c882f59b7cc8bbf12a84f8fdc33261bcbd8dd6074d54614812f59b7f75db71d248fc77107d73ad6364d7c57e4c0776fc37737c337b69d3235746ceb0dccb15f73ea635b65fceb2dc7eb13b936143f78fe80d77071d5097dcbb5a1f8117b31e4af29aa2b2be5440f6987855dc5b26c4b643797eb652c570a652a2cf54f05f1d6bfd2e0a93498d536b9088e850ef687740c54181c32df0db4ab8cd0ae02b49332678376aedab33e068fccf7001e69c77a028fab6ba2289e5c5c8f1dc8379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6576f60b49dab38b89e69f05ca53b308aad0ff07475a459d476ed4ae2db41aca4db23f121e7e6b2fff600bb94e9ad5fa8536de55dd056ba88118c47991a7bcd1bff764aa6afc1bb67c183dbcec175551747f1588ef76fbe0ee28d35b35dea6e6815758fc7555bded5e09179f1e7993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999f199f2761bf2d29d78384d1ecffe6ea3e7ffafb877a5db27ef55ce7ff38ed0f962cc7fe31d20fe25ca3cec550a6b4455dd9ff0ffdc1cce754d847b2875bedd2db12fb63a6605efc615f2bdc960cfd9dca62f39d1ce9ea799bfa0698fa8ea6d9f7b387455317fd9f51d3224353ec8f7f9ec1a3e2b4b2651d9b8b677fd93e8b44ad241fe7b3bdd2c01eebf16f9764bd67d62d82faed071e675cf5df91b65a9e975718be8ba1cc892deab68df4ad923186bb1acb61bf1f59b72c732ed82b8d75b7d3cb0a472b63fd3d615929730ab4a97b5ad469e6a0ad4c66db771d9f9bc77f1cce3cc7ef9a054f17e071d1ce383adf28c77d20eee7f866ff34db798c94c1be7d0efa5536d8df49fc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667563ce6b3567cbfb61b09638efa3ea49f67c8b7ca64fde9ef05b7a8f3ebfa399c3c73ea64d419df1dfd678bbab29b75be24d8bfbf43d4b674f57d8aa86d29fef0db33f82cc8c573dd22f025eb4e5ab4907c596cbe33cff15d8c0d21cff1bb1aba76b368ea6a7fc567aca829eeafdd0d1e7c361af56d9fa46173d977282a2ec41fee4b49b0491edf8f76b19df15862f6eb117ff8fcfa3b5adb7681ab6d9f2c77d96ee0775352c1fef18ddf53f921b47d3fd679ecc3817d47beb0fc5fa6869e538b7eaace0ebeaf595e04eb92ed6bfbb6e700608dc977175c57914e030c0d8a21ff798bbab2524eca8ad6c2aef611f9060cb29bcb7537962b8532fd2cf54f05f1d6dffcd66a7f83596d939f419c7d01c77f576d52bf088dce058da48ce36f365afb579afd0ab11d6d6d949165f15b747f85362aaaffa8ed18e0fa3826ebb61dc7cce34263fa79167a3fadff82f622ee7e5aff053184fdb40263fd9d60fdc2d53a883eb64899ff67acdf3c279765b01fd8ffec27f03d97a4ce67734e7eb0aeaf6ce7e4b85c54dd15337e072d152333c604b2e079829469abb5966d5619c1dddbb26c69c4b2a295f9adb092607ffddc7c672db3cff737ea22718ddf20973247425ddc9cb764ce015d7d532e057552f9a4a5ae52e638d8d74ed0f9046c27dc6fcfb1fc5fa686ce01710cf70be3af737afb5e049c29f083be2f06d6987c7741df720e287ec45e0cf9b35bd6959572a287682dec6a1f91f328643797ab30962b8532032cf54f05f1d6ff4283e74283596d939321cece817ee8aedaea01111a75028da40cde53b47d07d476afc3d5fb1b51e752f8fe92797e85c74937e74df6f358f3be9aed1ca193c18fe7083da19d4d58ca9af70be5781967bf617c57a227f8c577255c7dbbb90fe89682793c2f3898be5d7cc756f98b1a33a14f0e7c478d99900bdfed0ddfed73e8db6bee3567d2dcc11804e9f7cff09ba56a6ae8bc14c72590e55a00a38bb11c1241fd6f8f1f8811c77790e55a02a38be343b6df3eef098cb25c3130ba78b714c7df680c237e63188ff3c2e8e05bb15d9afaad58bca7d71a1899ded9c467538700a38bf3e2a6beab87e7f36de0d7d5b8445db3604c02a32c772830bab8378ed7328d61c4eb2259ae2d30ba788695edf84ef8ed79bcb7ec92b1a163bbe3be28c96cefbd54bae569f05c037d3b18d730ad05de673c90167dddf23478ee83be1ddcf74b6b81e30c1e480b7c36e862dcc34450ff39dc8178f0f9a52c770430a61c31f6cf8231058cff73af18180738624c65c1380018c57e14303ab8ff9a661c900523dea794e58e06c68b1c315e9805e345c028cb1d038c2eeea526c06f63182f064659ee5860bcc411e3c559305e028cb2dc71c078a923c64bb260bc141865b9e381f132478c9766c1781930ca722700e3e58e182fcb82f1726094e54e04c62b1c315e9e05e315c028cb9d048c573a62bc220bc62b8151963b1918af72c47865168c5701a32c770a305eed88f1aa2c18af064659ee54601ce888f1ea2c180702a32c57068cd738621c9805e335c028cb7500c66b1d315e9305e3b5c028cb9d068cd73962bc360bc6eb8051963b1d18af77c4785d168cd703a32c770630dee088f1fa2c186f004659ee4c60bcd111e30d5930de088cb2dc59c0789323c61bb360bc09186fb4300e72c47853168c838051963b0f186f8e9f317d2d3d280bc69b81e796f879d29add9c05cf2d6e79d2dfd5bbd9e2ebd6f87da5b7c5e0a0f175bf157886c4cf93de16b766c1230ca5b01c6a765bfc8c69cd8664c1781bf00c8d9f27add96d59f00c05cd6eb368767bfc8c69cd8666c1783bf00c8b9f27add9ed59f00c03cd6eb7687647fc8c69cd8665c17807f00c8f9f27add91d59f00c0fea34bbc3a2d988f819d39a0dcf827104f054c5cf93d66c44163c55a0d9088b6623e3674c6b569505e348e0a98e9f27add9c82c78aa41b39116cd46c5cf98d6ac3a0bc651c053133f4f5ab35159f0d48066a32c9add193f635ab39a2c18ef049ed1f1f3a435bb330b9ed1a0d99d16cdc6c4cf98d66c74168c6380e7aef879d29a8dc982e72ed06c8c45b3bb1d31de9505e3dd169eb8bf937d97c5d73847751f1b34beeec2500acb613f89f18e18c765c1381e186539ec2751eb88717c168cb5c028cb251c3336d44fa2167c4f88df77ba5daa0d1aafcf04b73c0df69340df131d69312168bc1613ddf234d84f027d4f72a4c5c4a0f15a4c029ec90eb448808fc6f00843292c87fd24a638629c9c05e3146094e5b09fc454478c53b2609c0a8cb21cf693b8c711e3d42c18ef0146590efb494c73c4784f168cd3805196c37e12f73a629c9605e3bdc028cb613f89fb1c31de9b05e37dc028cb613f89fb1d31de9705e3fdc028cb613f89071c31de9f05e303c028cb613f89071d313e9005e383c028cb613f89871c313e9805e343c028cb613f89871d313e9405e3c3c028cb613f89e98e181fce82713a30ca72d84fe211478cd3b3607c04186539ec27f1a823c647b2607c141865b9bb1d333674fdf26833f71d75add2dc7d475d973477df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f771cee4fb3107be13e043a622633e0579612885e5eef68ccd9a1179cae2e329c7baa3afc709eafeb885a7c851ddd1d713047517867c637c2c0f18711ff73a369dd1b18ec9a6322a9e271df13c9105cf93c0f394239e27b3e0790a789e8e9f271d534f65c1230ca5b0dcdd79c0f8581e307a1dbd8e4c8c5ec7c2d1d1337a46cfe8190f06633eb4e19e312fe231d95446c533237e9eb4664f67c133033493e56e71cb986c2aa3e299193f4f5ab31959f0cc04cd66583473c0986c2aa3e299153f4f5ab39959f0cc02cd665a3473c0986c2aa3e2991d3f4f5ab35959f0cc06cd66593473c0986c2aa3e299133f4f5ab3d959f0cc01cd665b3473c0986c2aa3e2991b3f4f5ab33959f0cc05cde6583473c0986c2aa3e299173f4f5ab3b959f0cc03cde65a3473c0986c2aa3e2991f3f4f5ab37959f0cc07cde6593473c0986c2aa3e259103f4f5ab3f959f02c00cde65b346365bc3b0f181fcb0346c73a269bcaa878163ae2599005cf42e079c611cfc22c789e019e67e3e749c7d43359f00843292c77771e303e96078c5e47af2313a3d7b17074f48c9ed13366c7f8781e30fa6ded1959191d5c5f35f80ecd33cddc77d43b34cddd77d43b34cdddb78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c33f97e2e7edfc96cbf31f31cf0b8f8e68da37a96abf53eafd7f5758cfa29ad5e30b47ac6d0aa14ca3c0ffabde040bf22f02beb9679f1972d7347026647be938785eb3814ea2f3e1e33f450fe5f7454f7a8b6fec566ee3baaad6feebea3dafae6eedbc7b98ff342f0ede3dcc77921f8f671eee39cc537e65b0575e7edf2fd53b58e9774be58cf4bf9c7c12e65261f92f96d17f87dc8856fbf0ff9634521f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7395f9c633c54e6802730788206781690f14c25e3994dc6339a8c672819cfb5643c1791f13c48c6d38d8c670219cf48329e9bc978ae24e3b9808ca71f19cf34329ede643c73c878ee22e3798a8c671819cff5643c9790f13c4cc69324e39944c6338a8ce756329eabc97852643cf791f1f424e339878c671c19cf5c329eb3c9788693f13c4dc6732319cf61643cedc8782e23e379828ce77c329e0a329e47c878e693f14c21e3b9938ce736329e72329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f15c45c6d39f8ce75e329e5e643c63c9783a92f1dc41c67303194f2ebe679a0d4f09194f2919cfa5643c8f92f14c27e3e942c633998c6716194f0d19cf10329e81643c03c878ee27e3e941c6339e8c670419cf4d643c4f92f11c4ec6d39e8ce772329e22029e44b0ff182609f8ff73606b612cab3efb3aa743ddff5fd6f616b0cc2b3adfd2b2ee97c126df927dc5b22ceaf432d425a5f3e5df6c4aeb84be52302ffe4a80e315129ecbc978da93f11c4ec6f32419cf4d643c23c878c693f1f420e3b99f8c670019cf40329e21643c35643cb3c8782693f17421e3994ec6f32819cfa5643ca5643c25643ccf91f1dc40c67307194f47329eb1643cbdc878ee25e3e94fc6731519cf60329e6a329e99643c13c978ba92f13c44c6733119cf75643cb793f17422e31943c6d3878ce71e329e85643c7dc9785a92f15c41c6732e19cf20329e2a329e19643cb5643cf3c878ba93f13c40c67321194f67329e6bc878cac9786e23e3b9938c670a19cf7c329e47c8782ac878ce27e379828ce732329e76643c8791f1dc48c6f33419cf70329eb3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329e4a0bcf738e78e47d7759b7cc3f47e2dbc1762857eb7dd5519d5ed3eb6aa5d72bfce2af18ca4c6f9bf955cf3f7059e132bf4f80efe6bc061abde6a82eb23d8a8ced83be5f72e4db1c9f4fe65f6ae6bedb19bedb1588eff686eff605e2dbc7b98ff342f0ede3dcc77921f8f671eee39cc9b7836b83247e274da622633e0579bc5e70f17d3947f5ac779df8758cfa29ad5e37b432afad4aa1ccaba0dfeb0ef4b35d7bcabcf8cb96b9230133c64559106f5cbc117f9d92aadfe1a1a0eb1b86be58af458e348d3a862c6ae6bea38e21cddd77d431a4b9fbf671eee3bc107cfb38f7715e08be7d9cfb3867f2fda6cec778dd588e3ed4f345b91e7813fc2ed1f9a218fdaa752dd6eb2ad6eb168e25609732ff1b9e6bfa7ddeeff371f9f6c7361fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be99e3dccc4b7ff1b381cd557ffea858ccc5bb0407d377542c3677df51b1d8dc7dfb38f771cee47ba903df09f02153437dfc9602cf62073c8eea997eb6b1cca8d373469d4aa10c1ee39739a86711f89575cbfc32e091a912785cc44163b639f22c20e3994ac6339b8c673419cf50329e6bc9782e22e379908ca71b19cf04329e91643c3793f15c49c67301194f3f329e69643cbdc978e690f1dc45c6f31419cf30329eebc9782e21e379988c2749c633898c671419cfad643c5793f1a4c878ee23e3e949c6730e19cf38329eb9643cc3c9789e26e3b9918ce730329e76643c9791f13c41c6733e194f0519cf23643cf3c978a690f1dc49c6731b194f3919cf22329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f1bc4ec67315194f7f329e7bc9787a91f18c25e3e948c6730719cf0d643c25643ca5643c9792f13c4ac6339d8ca70b19cf64329e59643c35643c43c8780692f10c20e3b99f8ca70719cf78329e11643c3791f13c49c67338194f7b329ecbc9788a087812c1feeffe27e0ffaf834dde517f0e6c6fe9fc62b0b5b0f868a9f3cbc056acf3b28e43c2f46287fdd78d3ab97a2f1f7da5605efc9500c75b243c9793f1b427e3399c8ce749329e9bc8784690f18c27e3e941c6733f19cf00329e81643c43c8786ac8786691f14c26e3e942c6339d8ce751329e4bc9784ac9784ac8786e20e3b9838ca72319cf58329e5e643cf792f1f427e3b98a8ce775329ec1643cd5643c33c9782692f17425e379888ce762329eebc8786e27e3e944c633868ca70f19cf3d643c0bc978fa92f1b424e3b9828ce75c329e41643c55643c33c8786ac978e691f17427e379808ce742329ece643cd790f12c22e32927e3b98d8ce74e329e29643cf3c9781e21e3a920e3399f8ce709329ecbc878da91f11c46c6732319cfd3643cc3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329ecadcf024d5bbedd2d73a002e9c52905f063c8b1ce8e3a89ee5f85d83af635cafd2ea6d43abd70dad4aa1cc52d0ef6d07fa15815f59b7cc8bbf7c64563c8feabced3b108f92308a6d915b9ef47efb68507f6a68bf7d1b785cb46b8eea99debf961b757ad4a2bb94c1585deea09eb67d47e697c376c83766c5f384ce0b6b02ca3d41c228b6656e79d2fbd71341fda9a1fd6b39f0b8687f1cd533bd7fad30eaf48445772983b1bac2413d6dfb8eccaf80ed906fcc8ae7499d17d604947b9284516c6fbbe5e996803acbd4d0feb502785cb43f8eea99debf561a757ad2a2bb94c1585de9a09eb67d47e657c276f0cc9ed9c6ac78e4d98eb026a0dc53248c625bee94a75b7902ea2c5343edd84ae071d1ce3bd23ddd8ead32eaf49445772983b1baca413d6dfb8eccafb2f82e0be2d5627523b4586de1599d632dc45fb6cc4bf390d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398a994167c523dfae14d604947b9a84516c2bdcf2a4df0b7a3aa83f1519f329c8af069e950ef47154cf741ff235469d9eb6e82e6570ff5ae3a09eb67d47e6d7c076c88679551e327b9d9bc6ac7866e8bcb026a0dc0c1246b1ad74cb936ec76604f5a786dab135c0e3a29d7754cf743bb6d6a8d30c8bee5206f7afb50eea69db77647e2d6c07cfec996dcc8a67a6ce0b6b02cacd246114db6aa73cc9f4fb8d3383fa5343edd85ae071d1ce3bd23ddd8ead33ea34d3a2bb94c1585de7a09eb67d47e6d7c176c88679551e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7c2d159f1ccd279614d40b959248c625be394a76bfab9c3aca0fed4d0738775c0b336769ecc730707baa79f3bac37ea34cba2bb94c1fd6bbd837adaf61d995f0fdba1b933afca43661f1bb961f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e6286686d8503cb3755e5813506e3609a3d8d6bae5497ff76076507f6aa8dfce7ae059e7401f47f54cf7dbd960d469b645772983fbd70607f5b4ed3b32bf01b68367f6cc3666c53347e7853501e5e690308a6d9d5b9e743b3627a83f35d48e6d001e17edbca37aa6dbb18d469de65874973218ab1b1dd4d3b6efc8fc46d80e9ed933db9815cf5c9d17d604949b4bc228b6f56e79d2edd8dca0fed4503bb611785cb4f38eea996ec73619759a6bd15dca60ac6e72504fdbbe23f39b603b7866cf6c63563cf3745e5813506e1e09a3d836b8e54926a0ce3235d48e6d021e17edbca37aa6dbb1cd469de65974973218ab9b1dd4d3b6efc8fc66d80ef9c6ac78e6ebbcb026a0dc7c1246b16d74cb93debfe607f5a786f6afcdc0e3a2fd7154cff4fef58e51a7f916dda50cc6ea3b0eea69db7764fe1dd80ef9c6ac7816e8bcb026a0dc021246b16d72cb93debf1604f5a786f6af7780c745fbe3a89ee9fd6b8b51a70516dda50cc6ea1607f5b4ed3b32bf05b643be312b9e853a2fac0928b79084516c78bc58e888a7d4e029b56871b07cabf90a9d2fd1bf09f87f0530ba6a0f171a8c328f318ebcae356b67f0b433343b98be55fd2b75fe30fd8bdbab121819b657bb1c68d6dee0696f6876307d2b2dfaeafce1fa17b7575f6064d85eed81c741fbdc2d61f0a8a9a1f38d2d8ef57154cff4f9c6d6c0ae3b1e87a40c1ebbb73aa8a7ed5c42e6b7c276f0cc9ed9c6ac7806e9bcb026a0dc201246b1e175cab6f879ba250c1e3535d48e6d73ac8fa37aa6dbb17703bbeedb40772983b1faae837a16815f59b7ccbf0bdb211be65579c8ec756e1ab3e219acf3c29a8072834918c5b61578b6c7cfd32d61f0a8a9a1766cbb637d1cd533dd8eed08ecba6f07dda50cee5f3b1cd4b308fccaba657e076c876c9857e521b3d7b969cc8a6788ce0b6b02ca0d216114dbbbc0b333769ecc7840c8a3a686dab19d8ef57153cf4c3bf65e60d77d27e82e6570ff7acf413d8bc0afac5be6df83ede0993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999b59f10cd579614d40b9a1248c62db013cefc7ce9379ee803c6a6ae8b9c3fb8ef57153cfcc73875d815df7f741772983b1bacb413d8bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886e9bcb026a0dc301246b1bd073c1fc4cfd32d61f0a8a9a1e70e1f38d6c7513dd3cf1d760776dd3f00dda50cc6ea6e07f52c02bfb26e99df0ddb61b767f6cc1666c5335ce7853501e58693308a6d17f0ec899d27f3fc1479d4d4503bb6c7b13e6eea9969c7f60676ddf780ee52066375af837a16815f59b7ccef85ed900df3aa3c64f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce85a3b3e2a9d279614d40b92a1246b1ed069e0f63e7e95a9e3078d45464cca720ffa1637ddcd433f3dc615f60d7fd43d05dcae0feb5cf413d8bc0afac5be6f7c17668eeccabf290d9c7466e987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308a6d2ff07c143f4fb784c1a3a622633e05f98f1cebe3a89ee97e3b1f0776dd3f02dda50cee5f1f3ba86711f89575cbfcc7b01d3cb367b6312b9e1a9d17d60494ab216114db3ee0f9247e9e64c2e0515343edd8278ef57154cf743bf66960d7fd13d05dca60ac7eeaa09e45e057d62df39fc276c83766c5335ae7853501e54693308aed63e0711077699e528347e63f21f0ade66b75be44ffe2f6aa054686ed559a03cdda193ced0ccd0ea66f55ff093a7f98fec5ed35011819b657bb1c68d6dee0696f6876307d2b2d26eafce1fa17b7d7446064d85eed73a0d9c16c0f0fe6be7d30e3d46b7ef0342f3a889a171d44cd8bbce6549a3b38be24f1581600034e29c87f0a3cdf8e9f277d5feed32c78be0d3cdf8a9fa78ba37a96abf57e07d8e35aafd2eabb86569f1a5a95421964f8ae03fd8ac0afac5be6c59f67f6cc51cc786e2bac0928f70909a3d8be053c2eda0d55f7f3f5ba64fdadc2f4d951757e5d3c2fc17bc5adf47a8543fc154399896575657fa7d94ae0ffb2dd547df6193647ef3077b13db79379f15712e4ecde6d83f792510b17cf9bb23deeefb3f07c1d1f4f39eee7e86bafa3ba67f3ec6faf8527c6ba77897aeeb927febaa7db8fce7a5db27eb58ffefb514e35ef86fb9eb41f9d8d3a17439981657565ff03da0f5b5be17adf94737273df6c11d4b567c255a6ede633a1afb55dca7d04e5b1cda9d0bfb87f56405d5db58b51f798b05d34db6e97da9bcf254ddfa5a0cb47a49ad99e53a08e9516ee4a026e8cc75cee67b26edb33b24a434736cd705b7f64d1b1af85bb2f0137e37eddd7d0914db303edd7832cdc8308b819f7eb41868e6c9a1d68bf1e6ce11e4cc0cdb85f0f367464d3ec40fbf5100bf710026ec6fd7a88a1239b6607daaf875ab887127033eed7430d1dd9343bd07e3dccc23d8c809b71bf1e66e8c8a6d981f6ebe116eee104dc8cfbf5f0a0be8e6c9a1d68bfaeb27057117033eed755868e6c9a1d68bfaeb67057137033eed7d5868e6c9a1d68bfaeb170d7107033eed735868e6c9a1d68bf1e6de11e4dc0cdb85f37b6df3eeb7e5d6be1ae25e066dcaf6b0d1dd9343bd07e3dc1c23d81809b71bf9e60e8c8a6d981f6eb8916ee8904dc8cfbf544434736cd6cfbb5a37709b37eb7f163a7fa64c698fe380b9e0f81c7454c398a837247fd5cd27d53f7185a7d6c68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4818c586cfa45cdce75775bf40af4bd6df2a4c038fa9f3bb3776bfc9f222c35f0a38c45f319439e1d4bab2d76bb69260ffed866371e3b6dc1d7b1d32dbd28c7f99177f25509f3dc0e3e0fdfc34cf5e8367af450b7cef341edfc9916e344e96abefe31d1ad46de7dd467d50d30f62f75f5fd32243d30f1cfb4e04f5b7a730e094823cf2b87836eca89ee9b66097512753e35228d311eab9cb413d8bc0afac5be677018f4c2d80c7550c06064f60d147a64a329ea9643ca3c978ce20e3194ac6731c19cfb5643c8792f15c44c6f320194f37329e09643c23c9784e25e3b9998ce748329e2bc9782e20e32926e3e947c6338d8ca73719cf5d643c6791f10c23e3398f8ce704329eebc97812643c9790f13c4cc69324e39944c6338a8ca70319cfad643c4793f15c4dc6d39a8c2745c6731f194f4f329e73c878c691f19c4dc6339c8ce724329e1bc9780e23e36947c6731919cf23643c15643ce793f14c21e3b9938ce774329edbc878cac9788e25e3b9868ca73319cf85643c6dc8781e20e3e94ec6534bc65345c6730a19cf20329e73c9788e20e3b9828ca725194f5f329e7bc878fa90f18c21e3e944c6732619cfed643cc793f15c47c6d3968ce762329e3d643c0f91f17425e39948c6534dc6b38f8ca78c8c673019cf51643c5791f1b422e3e94fc6732f194f2f329eb1643c1dc978ee20e339918ce706329e12329e52329e4bc978a693f17421e3994cc65343c6731a19cf10329e63c8780692f11c42c633808ce77e329e1e643ce3c9784690f19c4cc6731319cfe1643cedc9782e27e32922e04904fb7f8b2901ffdf0b36f966d087606b61599f3ca796f2eab8b8b8c3feeb6e6159f7071606d4e97da84b4ae7cbbfd994d6097da5605efc9500c707243c9793f1b427e3399c8ce726329e93c9784690f18c27e3e941c6733f19cf00329e43c8780692f11c43c633848ce734329e1a329ec9643c5dc878a693f15c4ac6534ac65342c6730319cf89643c7790f17424e3194bc6d38b8ce75e329efe643cadc878ae22e3398a8c6730194f1919cf3e329e6a329e89643c5dc9781e22e3d943c67331194f5b329eebc8788e27e3b99d8ce74c329e4e643c63c878fa90f1dc43c6d3978ca72519cf15643c4790f19c4bc633888ce714329e2a329e5a329eee643c0f90f1b421e3b9908ca73319cf35643cc792f19493f1dc46c6733a19cf9d643c53c878ce27e3a920e379848ce732329e76643c8791f1dc48c6731219cf70329eb3c978c691f19c43c6d3938ce73e329e14194f6b329eabc9788e26e3b9958ca70319cf28329e49643c49329e87c9782e21e34990f15c4fc6730219cf79643cc3c878ce22e3b98b8ca73719cf34329e7e643cc5643c1790f15c49c6732419cfcd643ca792f18c24e39940c6d38d8ce741329e8bc8780e25e3b9968ce738329ea1643c6790f18c26e3994ac65349c6d3c2e0c1ffab77c3f6e8bc7c3ba818fe3f49772e6fa7d72565e419b1ba57f19e6153f5dde9a8beef0575530ae677427d85fd3de079cf11cffb068fe9bb04f295a0d90ec3a618b73b62dc6130cafc766014fd7600cf0e473c3b0d1ed37709e4fb8266ef1a36c5b8cd11e3bb06a3cc6f0346d1ef5de079d711cf7683c7f45d02f941a0d956c3a618b73862dc6a30cafc166014fdb602cf56473cdb0c1ed37709e4078366ef1836c5b8d911e33b06a3cc6f0646d1ef1de079c711cf1683c7f45d02f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37709e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf25901f069aad336c8a71ad23c67506a3ccaf0546d16f1df0ac73c4b3dee0317d97407e3868b6c6b029c6d58e18d7188c32bf1a1845bf35c0b3c611cf5a83c7f45d02f92ad06c9561538c2b1d31ae3218657e25308a7eab806795239ed5068fe9bb04f2d5a0d90ac3a618973b625c6130cafc726014fd5600cf0a473c2b0d1ed37709e46b40b3b70d9b627ccb11e3db06a3ccbf058ca2dfdbc0f3b6239ee5068fe9bb04f2a341b365864d312e75c4b8cc6094f9a5c028fa2d039e658e78de32784cdf2590af05cd961836c5b8d811e3128351e61703a3e8b704789638e2596af098be4b203f01347bd3b029c6458e18df3418657e11308a7e6f02cf9b8e78161b3ca6ef12c84f04cdde306c8af175478c6f188c32ff3a308a7e6f00cf1b8e7816193ca6ef12c8df0836e1ed03b6d774be37d85ed5f95e607b45e77b82ed659def01b69774be3bd85ed4f96e607b41e7bb82ed799d4f82ed399def02b66775be1fd89ed1f9fe605ba8f329b02dd0f901609baff317826d9ece5f04b6b93a7f31d8e6e8fc25609badf397826d96ce5f06b6993a7f39d866e8fc15607b5ae7af04db533a7f15d89ed4f9abc1f684ce0f04dbe33a7f0dd81ed3f96bc1f6a8ce5f07b6bb75fe7ab0dda2f33780ed639dbf096c9fe8fccd60fb54e76f05dbb774fe36b07d5be76f07db7774fe0eb07d57e74780ed7b3a3f126cdfd7f95160fb81cedf09b61feafc18b0fd48e7ef02db8f757e2cd87ea2f3e3c0f6539d1f0fb69fe9fc24b0fd5ce72783ed173a3f056cbfd4f9a960fb95cedf03b6cf747e1ad87eadf3f782ed373a7f1fd87eabf3f783ed773aff00d87eaff30f82ed739d7f086c5fe8fcc360fb83ce4f07db973aff08d8fea8f3d2aea976f64f3a5f16c4dbce7e15d44d65e05bfca9327fd6f9d6461959b618ca9ca53b14aa671cea5ba6d20e4bbbac6cd20ebf063669875f059bb4c3af804ddae197c126edf04b609376f845b0493bfc02d8a41d7e1e6cd20e3f073669879f059bb4c3cf802da5f30bc126edf002b0493b3c1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493bfc34d8a41d7e0a6cd20e3f093669879f009bb4c38f834ddae1c7c026edf0a3609376f86eb0493b7c0bd8647ff90a6cd2367f0c36699b3f019bb4cd9f824ddae66f814ddae66f834ddae6ef804ddae6ef824ddae6ef814ddae6ef834ddae61f804ddae61f824ddae61f814ddae61f836d9cceff046cd236ff146cd236ff0c6cd236ff1c6cd236ff026cd236ff126cd236ff0a6cd2367f0636699b7f0d36699b7f0336699b7f0b36699b7f0736699b7f0f36699b3f079bb4cd5f804ddae63f80ed119d97b6ba0dd8e459b19acabfe184e3f0b4005fc2920ae26dfb714a411eeb2e532519cf1c329ed1643c2f91f19c41c633948ce738329e43c978de20e39940c6b3908c671919cf52329ed7c9784e25e3d940c6b39e8ce748329ef7c8787692f15c40c6534cc6338b8ce705329eb3c8788691f19c47c67302194f828c673e19cf12329ec5643caf92f17420e35947c6b3968ce768329e1d643cdbc9785a93f17c45c633838ce71c329ee7c878ce26e3194ec6731219cf61643cedc8782ac878ce27e3994bc6f32619cf22329e97c9784e27e35943c6b39a8ca79c8ce758329e77c978b691f17426e36943c6f314194f2d19cf33643c55643ca790f10c22e339978ce708329e96643c7dc9786e21e3994dc6f322194f27329e33c9785691f1ac24e3f9928ce778329ead643c5bc878da92f1ec21e39948c6b3808ca79a8ce735329e7d643c65643c83c9788e22e36945c6f33119cf4c329ee7c9785690f12c27e339918ce71d329ecd643c25643ca5643cf3c8786ac8785e21e3398d8c670819cf31643c8790f13c4dc6f32c19cfdb643c6f91f19c4cc6b3898c672319cfe1643cedc9787691f1bc4fc65344c093008e006cf2ff966093eff0ec03db173abf076cf20d9f37c0f6b9ce3f02b6872cb616163e61980e367957f60bb0c9fd9987c126ef4c7c0e36396f10ff6a7e6587fdf95bc032e2a7a5851ffd7d6ee1923c6e6f592615c4bbbdd1572ab07ff3aec8603cd83cef93f1ec22e3694fc6733819cf46329e4d643c2793f1bc45c6f33619cfb3643c4f93f11c42c6730c19cf10329ed3c8785e21e3a921e39947c6534ac65342c6b3998ce71d329e13c9789693f1ac20e3799e8c672619cfc7643cadc8788e22e3194cc65346c6b38f8ce735329e6a329e05643c13c978f690f1b425e3d942c6b3958ce778329e2fc9785692f1ac22e339938ca71319cf8b643cb3c9786e21e3e94bc6d3928ce708329e73c9780691f19c42c65345c6f30c194f2d19cf53643c6dc8783a93f16c23e379978ce758329e72329ed5643c6bc8784e27e379998c671119cf9b643c73c978ce27e3a920e36947c6731819cf49643cc3c978ce26e3798e8ce71c329e19643c5f91f1b426e3d94ec6b3838ce768329eb5643cebc8783a90f1bc4ac6b3988c670919cf7c329e0419cf09643ce791f10c23e3398b8ce705329e59643cc5643c1790f1ec24e3798f8ce748329ef5643c1bc8784e25e3799d8c672919cf32329e85643c13c878de20e339948ce738329ea1643c6790f1bc44c6339a8c670e194f25194f0b0bcf3e473cf2ad1859b7ccef6be6be771abe771688efed86efed05e27b9be17b5b81f8de62f8de5220be371bbe371788ef8d86ef8d05e27bbde17b7d81f85e6bf85e5b20be571bbe571788ef9586ef9505e27bb9e17b7981f87ecbf0fd5681f85e6af85e5a20be171bbe171788ef4586ef4505e29bf9fa5b7d274cfa2aefd2bf09f87f0530bee188719fc128f36f00a3d8f07bd4158e78a2aedd2b087c2b2de45e963cf34cc0ff2b81d1554c55188c326f8ba99dc053e98827ea9e4325816fa585bc8b2d7d2a13f07f1c7fd9554c551a8c326f8ba9edc0d3d7114fd4bd92be04be9516f2eeb3bcf39780ffe378ebae62aaafc128f3b698da063c831cf144dde31944e05b6921df0a936fd224e0ff383ea3ab981a6430cabc2da670fcdcc18e78a2ee4d0d26f0adb4906fedca372f13f07f1cbfc9554c0d361865de1653387edc10473c51f7d48610f8565ac8b360f9467b02fe3f14185dc5d4108351e66d3185e3dd0c75c413752f7028816fa5c5309d973e5609f8ff3060741553430d4699b7c5d47ae019e68827ea1ee63002df4a8be13a2fef7024e0ffc381d1554c0d331865de16536b8167b8239ea87bafc3097c2b2daa747e8dfe4dc0ffab80d1554c0d371865de1653ab81a7ca114fd43de32a02df4a8b6a9d976fce25e0ff38fefb70478c5506a3cc0f0746b1ad049e6a473c51f7baab097c2b2de4dbfe2bf46f02fe8fe3b1ba8aa96a8351e66d3185e341d738e289ba475f43e05b69315ae7654c9804fc7f3430ba8aa91a8351e66d3185e3578e76c413f56c6134816fa5857c9b6b99fe4dc0ff6b81d1554c8d361865de16534b81a7d611cf628367b1458b83e55b69217db997e8df04fc7f0230ba8aa95a8351e66d31b518782638e2897a963381c0b7d242beadfda6fe4dc0ff2702a3ab989a6030cabc2da61601cf44473c51cfa026e6c077d4f3945cf88e7a36900bdf51f7b973e13bea9e6d2e7c47dd7fcc85efa87b69b9f01d755f2817bea3ee71e4c277d4f57a2e7c475d7be6c277d475542e7c475d13e4c277d4f96d2e7c479dabe5c277d479876fcf7d7b1eb7ef8379ee50a8edf9c13c861ecc6389bf36f0d706b9f2ed8f25feda2057be0bf5dac0b7e7b96fcfe5faab2888be1e7bcb91efa5866f99c7e72c4b1df95e6cf896797c66b0d891ef45866f99c7fbdf8b1cf92e357ccbfca21cf86e67f86e9743dfed0ddfed2dbe1d6cef6422a87ffd2d0c38a5208f31f0a6032d1cd5b35cad77895ed7d731aed776dfc6dc5f4aa1cc12d0cf75db21eb36db8e7c64c6b8288acf7779027cc877c9944d9e1fbf063669f75f059bf40b78056c726c7a196cf24cea25b0c933ab17c1365ae73f069b3c3bc63efbf2fc7f1bd8aa741efb8a0fd7f92d6093be54d84759fac36d069bf469c4beb1d22f7523d8a46f31f6c994fee1ebc1267dfcb12fa0bca7b1166cf2ae0df64193f7a556836d8fce63df27f90ecd4ab04dd7f91560fb83ce2f07db833a7f0bd87eaff35f81ed773abf086c0fe8fc9b60fbadce2f01dbfd3aff02d87ea3f3cf83ed3e9d7f0e6cf7ea3cbecbf66b9d7f1f6c9fe93cbe43354de77782ed573a8fefeedca3f3dbc1f64b9d7f166c5375fe19b04dd1f98560fb85ce2f00dbcf757e3ed826ebfc3cb0fd4ce7e7826d92cecf01db4f757e36d8c6ebfc2cb0fd44e767826d9ccecf00db589d7f1a6c3fd6f9a7c0f6239dff126c77e9fc62b0b5d0f9a560933123b19f4ab1cebf05b6563a8ffd8fe4fbfe13c17688ce4f005b1b9daf059b7c1b6e34d8643ce81ab02574be1a6c253a5f0536393f1b0e3619ff6418d8e45c6a28d80ed7f9216093f39ec16093f12c07814dbe41da176c47e97c25d8e4dbfa15603b46e7f7814dc61c7b036cf2ddba3d6093b1981f069b7caf7a3ad84ed4f93f804dc66179106c27ebfcefc1768aceff0e6cf20dcf07c056a6f3bf055b079dbf1f6ca7e9fc6fc0266364dd07b63374fe5eb0c9d8c1bf069b7ceff933b075d4f969603b5be77f0536194be41eb0c9f8a0bf045b279d9f0a36f90ef714b09daff3bf009b8cf7f773b0c9378627834dc675fb19d8bae8fc24b02575fea760ebaaf3e3c1d64de77f02b6ee3a3f0e6c3d747e2cd87aeafc8fc1d64be77f04b6de3a2fed8cda9fd57ebe57cfa782f8cecb94bf0f83fa5343d706c2803c719e6b97020ffada1d7bdd93e9f37ad9ef5be8f54a0ced06dfbb62f79db9a6f840afab58af7797e1bb18ca9cad1b07b59c1cf35beae5f618cbe17d2c59b72c7301d8df37d6dd4ed7f70347f5dd65300937ea2065ced34cead8f8039d6f03cbc4c896be3e96580b40439c52901706375a25cbf1bcb7313c1f00cfeed87932d7eb2e6202f7adb8afd7cdfbb866ac9542995da0dffb0ef4c37d5dd62df3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333fb3e2d9abf3f85c59caed256114db6ee071719f1f9fc3cafad5739df74fadf3bb3b76bff59fefb5d2eb2d37ea5c0c65be86674e7b74be04fe2fdb2d6a5b3a784ed8e0b6147f25501f7c16b4d711cf6e8367b7450bc997c5e63b39d28dc6c972d597453d63df63e8bad7a2a9abfd75b75e5791a129eeaf1f1a3cf86cb404783fd2bf0958cf47500707fb78837121fe705fda0d36c97f088c2eb6331e4ba43d90e7e1f86c5acafcca782e1effb64f96bb6c37de833aa582fde3bb18cafc0edabecf751efb86ec05ddfe61f9bf4c0d3da716fd549d77c45fe7f4f6dd0e9c29f083bedf05d6987cd77b87a64827f123f662c8ff1dfa734839d143b416761caf1cd9cde53e34962b85323b2df54f05f1d67f87c1b3c36056dbe44b88b37fc0f1df559bb43342a30b402329b31b34dae38867b7c1231ce24f9591eddfda2823cb164399ff056d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f107c068d651c5c7c063ea7877c7ce9b5ffdbf0e29cbfc62bb1e57ff2f59773bbdac7004c6facb61fdc2d53a883eb6fccff62dab5bbfcbfe657b8c3a0b0bea2c65da95657e559c5daaf3d99ceb1facebb6a873fd9d0e781241fd6b6f3535747cc763cc7bf07f2953fecda62e8eea596e3b76bd6fd4a914ca74847a3a388f69f05de01de0dbc536472de41c6a97a1453194e95096f995b6234a47bc56fd202775495acf07cb2d7591321dcbeaead206ec7132b9dc6eef429dd47a775bea2a65ce2babd3a5b3ce27603be17d93be96ffcbd4507b8063f16c8dbfcee9edbb053853e0077dbf03ac31f9aef72d1039df173f622f867c65595d5929277a88d6c2aef61179e70fd9cde57619cb9542996d96faa78278ebbfd5e0d96a30ab6dd2a5ac2e2f71e4b2dddc16a15139682465f0feb11cdbf1bd3bdb717fb723eea8e3fe6e6034db4d3c7771c9b6c76033efa1dace07a50c9e934999abca32bfaa9d4d58ca9af7865ddcc7c4775003a84760d455268c0107d786ddf0da49da29f1d319ecbb755e74ee6c68570c650695657e1d9e775bef5d9ad777784d21dce6be85ef7e0c29abe3c6b11377ebdf12b07da27f1d5da775b3dd33140edb3dc3e16575ecb8ac707d6ca98b798ddc22d8ff9efad74659bcefd6d07266de1c8752e9fb8951cee607af79627b57a34b793932b508ecf70b3e34d88b82fdc7dc94fd0063cebc8fd2d9580fde47a92dcbfc4a9b649655dbfedf8faad347b6a36887ed09c6e487c098d2f9f26f3675b1d55fe6c59f62fcc8a8839bb62bf3be5236f781f7008f8bb6dd511b5d8ec7d836b1adb77795edf8ffa1a1550e9fd75a8ff9e633f736463e1edfc96adbfd279b16bb2c3cae9ea34469b1cbe23b3e2d7a8cb41d3f6c5ae4b2ef439416ef5b7cc7a8450ddef76c488bf72c3c2eee4535a4c57b16dff169d1b3bca1e71aa8c54e0b8fab7b0f515a88bf6c99df27606e63e4e3f1ddadca769fcca6c50e0b8fabebe6282d76587cc7a745971e788fae212db65b78e2bf3fd7b016db2dbee3d3a2576fbc87d79016ef5a785c3dd38dd2e25d8bef18e36294ed5e8e4d8b6d169e6d39d6629bc5778ce7873d6cf7da6c5a6cb5f038b8efdaa0165b2dbe63d46204de776d488b2d169e2d39d6628bc5777c5a5475b7dd13b669f18e85c7d53de1282ddeb1f88e4f8b11bd94efcd8dd062b38567738eb5d86cf11de335543a2e3635428b4d169e4d39d66293c5777c5a54a7cfb53636428b8d169e8d39d662a3c5777c5a94a78fa91b1aa1c5060bcf861c6bb1c1e23bc6b8485f4fae6f8416eb2d3ceb73acc57a8bef188f23e9b858d7082dd65978d6e5588b7516dff1695193beffb4b6115aacb5f0accdb1166b2dbe63bce7928e8b358dd0628d85674d8eb55863f11d9f165dd3c7d4d58dd062b58567758eb5586df11d9f16a3d2cfc45635428b55169e5539d66295c5778ce79de9f6626523b45869e15999632d565a7cc778de99be7fb1a2115aacb0f0acc8b1162b2cbe636c3bd3e79dcb1ba1c5720bcff21c6bb1dce23bc6f3ceb4166f37428bb72d3c6fe7588bb72dbe633cef4c1f47de6a84166f59785c8d8112a5c55b16df31c645baed5cd6082d96597896e5588b6516df31ded74ab79d4b1ba1c5520b8fabf11aa2b4586af11de3f548fa1edf924668b1c4c2b324c75a2cb1f88ef15951fa1c7c7123b4586ce1599c632d1683ef3db1fbcef4e7161fd217eb7c438b6228734a87ccaff4c58ad251d681fdcab02e6fc65e974cbfb24511757913ea2265ce80bab4099c8c51d4cd515dd331f306d449adf7234b5da5cc391dea74e9a4f309d8261f836e7d2cff97a9c8984f415ef453757e2dfe3aa763f555e04c811ff4fd0ab0c6e4bb0bfa2ed249fc88bd18f2bd3bd4959572a287682dec6a1f795de791dd5c6eb1b15c299479dd52ff54106ffd5f33785e3398d3ef3d409c491cb969bb324caf4768743e682465b0cfde478e78cc3e84c221fe5419d9fead8d32d88752ca5c086d14f62b957a2682fdfb4d3a6acbba20bbac5be6c55f29d8f600a35947151f9f41df4f192b42c69150361917a22baca7a7615375ede5a8aee24bd62df3bd8051c6a9e8997bc66463197b188c8aa78f03cd70ec0d991a3a5ef4019ede0e781cd5337d1caa30ead4cba8532994c1771b2b1cd4b308fccaba65be027cbbd8e6a8851c93cf31b4288632c38df3c7281d651d2a7e7b5aead2cf715d64ddd22ef5cb81ef4ac37777c37722a8bf9d83a0e1fdab1298fb3a6056ebed1fff7acbf1bc4d624afc74873a0d000de2aa13ae4bcef30618da16437e2a9ce74939292bc72f6157b12cdb12d9cde5fa18cb9542997e96faa78278ebdfdfe0e96f30ab6d72179cdb39d81fd231d0cfe090f9eea05dff08edfa817652068f7f3d1c69d7d7e091f91ec023e7381560937305e14fc0ffbbe680db6cf72a2cdc62c371e27a5818bbc7cf983ed7e96130ca7c7760145b5fe0a974a499b9adcf31f4c1e3726ba38c2c5b0c6566c1b1316129abf6bb8e4575f56aa9edb1bd3ba6dbf4d60ef4c2711a03d02730340c402fa9672b073c6d83bab11a274fa99d34e2ce51378cca3c7a14b46203137f8b2cd5680136ccb7b4d882a0fe9094c5609321295b81ad85210b0e8529e565483b1772a11eb2ee6283b30db0c4e91b87f394a9a1d03904785c84b20a1d19d25387ce2d93c64c1985f1d1cae06c4aeca8ffb56ca05cd4ba5c6d07739f48c1bc1983c58efcb784faa6605efca96d53aaf313468cbc7bc0a43ba78e1b357eca6414cadcb1315f14d4df00e66f94e0ae763a0c00ac30360ead8c7a618321ff930dd3367ece6e3866aea94d00fe646a0bba1dea4037b57e19fb76e488b163af9b5a3576ccc84ba78e1f39654ced78dc9a6d0ce5a2b6b4fcbf35d86c4d3c965513365bb8ec21169b6dc25186db804d8e5c87824d78da82ad25e4a5bcb9659c846b4758bfec52ea7f4a9c56bae287047521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e21c80c1dac860a3e39c80c05acbe7651166486f63d2dc80cdd7b4690199af72ce0fb36309f1d644ebbd4d0ba9d82ccd0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e9a73aed549717eaf685ba95a54ee9d4e9b23a1554a76fea72a4bfd67a40982e0cd34561ba384c9784e9d2305d16a6cbc3744598ae0cd35561ba3a4c03c3744d98ae0dd37561ba3e4c3784e9c630dd14648677be39c80cbfae867fbe35c80c0d7d5b901936faf62033a4f41d4166b8e911416628ea91416698ea51416608eb3b83ccf0d66382cc30b9770799a176c70599e17ad570d86a986c357cb61ae6570d09ac861456430dab6189d510c66a08643534f2fd4166c8653564f3434166d8e7e9617a244c8f86e9b1303d1ea627c2f46490191e5c0d1b3e23c80c33ae861f9f1d64862b9f1b64863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f314c2f85e9e520f348423d8a518f28d4ed7ff5184cdda27e33c8dc3a5f12641e71ab47feaa0b84ea12a2bac8ac08325da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aa770799dbe27b83cca352753b5c3d1a50b7ccd5edfb4fc3f4ad201393df09d377c3f4bd307d3f4c3f08d30f83ccb0c66ab863355cb21a5a590dc3ac866c564339aba1a0d5b0d19f0599a1a7d5d0d5bf0d324362ff3e4c9f87e98b2033bcf69761fa6398be0ad39fc2f4e730fd254c7f0dd3dfc2f42f61fad730fd5b98fe1ea67f84e99f41dd30dbd8909ca05b1f7d05138c983265d4b80953caa6d4968d9b3a76ca980963ef2b9b3666cae8b2da7b464daa195b3b0d17feb65e58c6081f3069d288fbcac68caf1e756f59edd42965b5356555b553c757d73b88ff452f74d2fe1e475457473bfbcf6f42fa7f9be8f450dd2ecae8eb57345cb792964d10e488a62cd4a365d32a34491fc1e452f7c6cc7970d9e4b1b553cacacbc6877fc3036fedb451d59dcbf07f934391274f299b3c65c4a4296535936ac79575e98ceb7db86d132af15f6dddc09c7942d3c4e9a8bfb3d4a410fbe5a94d50e03f4e6d1a69ebb26f40dab6ac694ecbca9a50c3b39ab2d0954d24bca92c5296c953aba64c1a31724af4c2b77e9385ef684a35c737b19a27776882b3d39bb2d0800e4d23bca329ce6666e12cf86f5a25cf63845506009b2d6c6f00000028461f8b08000000000000ffed9d77741cd775c667d158164b1024c15ea046b3015c2c1a0136b0774a9464f5429004455a24419150b32c4bb224f7debbe516cbbdf758a97612274e1c3b96bbe36e4b2eca3f39ce49cef1c97bb3ef1a1f1e67d658682e78077be79c8b7d73f7eddcdffbe6ce9bd9f766074f054190098a4bb5b18b8273177abfcfbde69fded296e0b6f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82914bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413afaa8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d867b5de65e97bbd715ee953eb3cabdb6b836d6b8f55663ab2d9bb136efbd82b176631dc63abdf7ba8c751b5b63acc7bdd7ecdeeb35b6d6d83a63eb8d6d30b6d1e9b0c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e63971abbccd80163971bbbc2d895c69e69ec2a63571bbbc6d8b51ecb75c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b96b15b8d9d3076d2d8296383c64e1bbbcdd81963678d0d19bbddd81dc6ee347697b1bb3dcd9e6dec1e63cf3176afc7f95c63f719bbdfd803c69e67ec41630f197bd8d8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b8dbdcdb1d081f07663ef30f688b1771a7b97b1771b7b8fb1f71afb0b63ef33f6a8b1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb4b635f32f698b1bf32f6d7c6fec6d8df1afb3b637f6feccbc6be62ec1f8cfda3b17f32f65563ff6cec5f8c7dcdd3fc5f8dfd9bb1af1bfb77e7fb867bfda6ab4be362ff61ec5baefcb87bfdb67bfd8e7bfdaef799ef19fbbee7fb81b11f7abe1f19fb4f57feb17bfd897bfda97bfd997bfdb97bfd857bfda57bfd957bfdb57b7dc2bd3ee95e7fe35e7feb5e7fe75e7fef5e9f32765953b13c39185efa8284faa88ea3793ba742e22f0d462e568b6af71ebd363b7f8d5ba757d2aed6add77afe3ab75ee76d67b25b9fecf91bdd7aa3e79fe9d6677afe26b7dee4f9e7b8f5399eff62b77e31f8b3018cb93abff5553b57067c94af55e0ab75be6af0d5d1e6c037c9f96ac147fbb70e7c539c6f12f8a63adf64f0659d6f0a6969acdef9fa82a47225df6fb79b4b7abb6e1e6a5af2bc87ed761b9878a727cf3b60b7dbc8c06bf36386dbd674c89b99ced708be59ce37037cae0bfad331677db39d6f16f8e6385f13f8e63adf6cf0cd73be39e09bef7c73c1b7c0f9e6816fa1f3cd07df22e75b00bec5ceb7107c4b9c6f11f89a9d6f31f82e70be25e0bbd0f99ac147f7b85c00be8b9def42f05de27c17818ffada8bc147d78697389fed272667e033ce4f7d54f819ea9fc1b78cfa66f02da77e197c2ba84f06df4a884dbe55d0af90afc5f9a88fb2eff5ba725f90d43151088f89b5496fd76cd96e777df2db0de7ed3604c35af7419cb5a0d546574ef0dea0368c9d714671c85f03e55d5097ea911e749e21767b3e59e7ca1b4b7caed7fb5c0eeaac8b687f5f906cfbd77b3ceb3de65a683f4fceb617346747bd949db357435d3ff7e89a6722e6ec5ee060c8d92ecdd9512f65e7ec00d4f5738fae7b2762ce5e071c0c39dbcf93b385bce66c718c2c08a2738fbefb4cc49c3d061cc9e76ca7e6ece897b273f601a8ebe71e7dff9d88397b0770249fb3ddfd7a6d30eaa5ec9c7d05d4f5738fc6622662ce3e041c0c393ba0fdeca897b273f66d50d7cf3d1a179c8839fb6ae0483e677b9872b65d733628ce77064174eed118f544ccd9478023f99c3dace3b3a35fcaced9cf435d3ff768be6422e6ec475cd9ce337cc3cd332c04df379d6f11f0269fdb473a9872bba0b95dbc0f2408a27394e6ee26626e3fe6ca368f1f877b0fc8f76de7bb007cdf71be0bc1f75de7bb08dac5700cf4eb3130eaa5ec63e0fb50d7cf659a479e88c7c0d7818321670f6bce8e7a293b679f80ba7eeed13d0d1331677f041c0c393ba0393beaa5ec9cfd03d4f5736f992b4fc49ca5fb4aedf5c28fddf5c20af0fdc4f95682efa7ceb70a7c3f73be16f0fddcf95ac1f70be75b0dbe5f3a5f1e7cbf72be36f0fddaf90ae07bc2f9dac1f7a4f37580ef37ced709bedf3a5f17f87ee77cdde0fbbdf3ad01df53ced7e37c76be8beebdfaaaf3d97d4b1af505c9ee5bbac792b64debabc621768317bb611c63377ab11b2362b730c4ce420c5a32de7a1f945b7879f2b960e4ef3f28d6eae463b5dbb6b706a36ffb6ae0c933b43d0b3146c393079eb6e479c27b7d0bc96f37dcc7ad9ea65988d50aed6a6768570662d1b6699de2e5c087fd777b046347f28c850cc4a26dd37a0730920fcf27745ea7e3c79e0f97668679198ea5f09a88e2d1b3bf886335f8a9ceef670db3ad706cf5f03e9e5bdb3c1f535e867941b168dbb44ef1eaa13d6de3cf58182d63de63e4ea2332108bb6edc7c6e3bd65fc351bd57ecd81ef3cf44985b1f649f5c0361ed72971fb5a4a6c8ef355066250df469a17c04f7566bb1f24d8be6d07f4bb0cc75fa1dceb37ec0f92cfe3421e8febd1f0b4030fc7b1cf74bce6f1bcffc720d95cebf4b46af3b4ca419d0ed0af9341bf52d721144f99955999955999955999955999955999955999955999955999955999955999e533e3fd1738bf49f5560961245f017838c6f9c3e747b96dd1f6edbcce77605e27f9798b421ee72ce91ec3e55e9b6ba0ce9399e1ba3f80f9747f6e10e73457f16a37aafb2cea8373e76239e710e3e681a3e62f9b138b5d38cc35df669fa1629f43d6eae9ba2a425386fb5446689af134c5fb14577a3c364fe7550fb371ccfd953b17895a5139c9b93dbcc78077bf14fb0fca85aa6064ff81e799aec4638f9cc3a4f9f22e2f760dd4f99fccf0bea17b51e9ff1cfaf73cd93adddeb6e933cbc1dfed6dbbc17d96386abdedb7c267a9ceff419ffaf6aae04f9a71dcff81fd72006dc5a50fca386f9efc79b8388fdf5e064f27f070f4334cd71b793c06929ec7eff6b48aba8ea13a5da05f37837e51d7a2b44ef194599995599995599995599995599995599995599995599995599995599995593e33fe569458b350af2084719cee7d08e733e8f92fb47d3baff3d2aae1b8dcf37034e7b4c26b730dd4f95ad570dd57ba727d70eefd0e71fb92613eafe4bea478f5d01e9c0be2fa3d7787c7d311a105959b138b5d9cc74f5ee3e179fc764fd74284a65cc72bceb1a2a678bcb6793c38375a1f9c7b6f4916b6331ef70ec5e505c5c363a9037c54c6df4773ec673c97f8f7f5503c9cbf7ed469db1070edfb429eb3df58036dea0bcecdef1aa8f361e8fb3eeaca780f07de3bf258c4fbb4949aa726fd589e65972fcefbae05ce3e8883b1d7016b42b1db3076c619c5217f0d94bf54355c97ea911ea435b1db63849e0986ecfee7dabccfe5a04e4f44fbfb8264dbdfebf1f47acc769f7c02f2ec3138ff73f5493d311a2d078da80e5e0771dd93e7f791fefd8d78df5e9d5707af59a8ce57a08f8abb7f34ea9e43aef358dc3d8751d7c69dc0e8b7d1bfcfb3d2efd37a1cfa8ba4efd37a1c7208efd30abcedaf80ed13575d107f6ea13adff3b6ef5f93d367f03e30aaf343e82f1adc3d8bf5c1b9d7df78cfd4787cbf8abb4f9ae2e1750d1edb7faeed96790dd4ef4b9019730259f03a81eafccadb67dd31dcab233efb64cc6749ab1657c6ef2fbe7e56871ef84c5f223a148ff95eaf2d94d73dd016aaf35fde3560f2d72dc56bc0e4db3af29a84fa818e88b6529dff8663ed0f708d47fb09bf77d4559ffb3e2da5ae01493fdbe6f17e3e30c696f07ce0daeae1bafe737e49eb729f0fdce57d4ee2f381ff17f2ac0eee43e7eaabd7c568b40234a23af8db203a8fe0b37ca3ce315cf7f6c79d63a29e4189fd7343f5f8b3f9e36a51d70854873e8bd708b31c7383d3d9afeb8f17d2f932c9fb86f1b712ad10177f2bd1caa4671e74eb8375bc2e389fb1f34cb1e39e399d1f87d871cf9c1e8fd88d5eecc6718cad9aabe6923467782672f8fb337c66a95d4a5d9712430e3e579502c6ea1430d6a480b136058c7529609c9402c6c929609c9202c6a92960cc02e3f93cb733e85318ab3e5cfbabd4b506c66e61d2a29cffdfc1fcbf544a5efb606c86ef74a1162dc1e8b5c0ef791ccf7e28f77fbd1003feef821929609c9902c65929606c4a01e3ec1430ce4901e3dc1430ce4b01e3fc14302e4801e3c214302e4a01e3e214302e490163730a182f4801e3852960bc28058c17a780f19214302e55c6441857f23216c6ca687938fee7dfd3f99f630c3cf9a87b4e997e7b52f6ff5b637e3e69db589f1b87f796f0fe4fb8a7f76c3b8e7b47ca7db65da9ffb7cac458182b23d77decf83b9ed1f0e0ef22a37e5bc3c058182b23d7ef5ff0377aa3e1e902cd3a233463602c8c9591eb5eb972efe5c47bfabb223463602c8c9511efab4e9027d4acbb0c9e35a0597784660c8c85b13272dd979c8518a3e1e901cdd64468c6c058182b23d36fdb42cd7acae0c1df80f54468c6c058182ba3e559cba4596f193c6b41b3de08cd2431224fd2cfc9ee8d88c5f19bc172db4e0cc83825058c5353c088f74970f45fa5ee93e8e5d5a730567db8f657a9fb243036c3ef63422df0f7107f4e8bf5bc3c25ef93c0d81b98b4c0dfabfc392d36000fc7ef67b21063343cc49083cfcd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1bb2ac3b562c9ef2f1b2678ecb8ef2a133d76dcf792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d63fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e23d886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430e3eb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6a10f57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1e7da78190b6365b43cdb93e70935db5606cf76d06c5b84660c8c85b1325a9e1dc9f3849a6d2f83670768b63d423306c6c258192dcfcee47942cd7694c1b31334db11a119036361ac8c966757f23ca1663bcbe0d9059aed8cd08c81b1305646cbb33b799e50b35d65f0ec06cd764568c6c058182ba3e5d9933c4fa8d9ee3278f68066bb233463602c8c95d1f2ec4d9e27d46c4f193c7b41b33d119a313016c6ca6879f625cf136ab6b70c9e7da0d9de08cda432ae4d01e3c6143032eb58182ba3e5d9cfc4b3af0c9efdc0732913cffe32782e059ecb92e70973ead232788821079f5b9b02c68d2960541d5547498caa63e5e8a88ccaa88ce531f6a58051f7b5324a6564f87e55f23734974ef0d80d5eec860a891df71b9a891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c9714fb40f2b10be53e63e600f0703cf386a99d79bbddcbddb6fe98a07e56ab2b3cad2ef5b4ca419dcb41bf2b18f4cb405cda36ad53bc72999f2180992976619ad9c614683fc5d8e8e961e35fc9d4f6b8befeca091e3baeaf9fe8b1e3fafa891e5bf35cf3bc12626b9e6b9e57426ccd73cd7329b1b15c1b0c5fb7d3f34fed369ee9ca356e1d59c94f752e9b547c6d08f418e288adc7909e2b2a21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad792e2fcf311faac68127f07882123c1b84f1ec16c6b34318cf1a613c8b85f1740ae3992b8ca7208c6786309eadc278a608e3592e8ca75a18cf26613c79613c7b85f12c11c6b34218cf3c613c3385f14c15c653238c67b3309ed5c278f609e3d9238ca75718cf52613c3dc278b609e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8c67a7309e16613ccb84f1ec17c6b34e18cf02613c4dc278ea85f1e484f1d409e3592f8c6797309eedc278ba85f12c14c6d3218c67b6309e55c278a609e36910c6b34518cf24613c8b84f1cc11c6335d184fa3309ec9c278c6e37943e5f06404f06483739f499685f70f80afcafbacedafda9a86dfbfcaf9abe03357bb7275c4b6af021ffd36fcea88cfa24e57415bfa5c39fff49650278cd507eb14af1e38ae16c2734018cf64613c8dc278a60be399238c6791309e49c278b608e36910c6334d18cf2a613cb385f17408e359288ca75b18cf76613cbb84f1ac17c653278c27278ca75e184f93309e05c278d609e3d92f8c6799309e16613c3b85f1d40ae36915c69315c6b35218cf2c613cedc278e60be3e912c6b34d184f8f309ea5c2787a85f1ec11c6b34f18cf6a613c9b85f1d408e3992a8c67a6309e79c2785608e359228c67af309ebc309e4dc278aa85f12c17c6334518cf56613c3384f11484f1cc15c6d3298c67b1309e35c2787608e3d92d8c6783309eaa081e86ff7f19f2d0fd6bb46d5a3f202436c37e08ffefe7354c6dbad66dabd66d97f8295e0dd4b9ce5d18d8fb51f0b3c4e5df6f88f7ce5d0b1a5dcbd416da1f196fff30c72ee07d950130049e3e41040fc7fda84ced1c918709feffd9bcd5ea3a4f2b7fdfe5a0ce35a0df750cfa45e5f69f8e01f79a4666cb43e70e62cd42bd0d4218c977252f4f78dc6e08462ea58edbeb8087a30f636a67787c5defb5694384ee540773f57a8676461d3bb47e3dec87b4315b9e4dae4cac59a8b7490823f9aee5e5098faf4dc1c8a5d4f1753df070f43f4ced0c8faf1bbc366d8ad09dea60aedec0d0cea86387d66f80fd903666cbb3d99589350bf5360b6124df75bc3c1d5968332da58eaf1b8087a3ff616a67787cdde8b5697384ee540773f5468676461d3bb47e23ec076556e62866cb43bf3121d62cd4db2284917cd7b3f274e4b3d0665a4af56337020f473fcfa47bd88fdde4b5694b84ee540773f5268676461d3bb47e5344ece620592d6e1e85163747f0dc3cce5a50bc7299af4921b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaab35d5467d55975569d9360569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a167c4106b16ea6d15c248be1b7879c2df056d0d462e196fbd0fca3703cf8d0cfa30b533bc87fca0d7a6ad11ba531d3cbe0e32b433ead8a1f583b01f0e96c17c530a9955e7b1315b1e7a562cb166a1de36218ce4bb919727ecc7b605239752fdd841e0e1e8e799da19f663fd5e9bb645e84e75f0f8ea676867d4b143eb144f9995398ed9f2d0ffb021d62cd4db2e84917c37b3f214c2df376e0f462ea5fab17ee03998384fb11f63d03decc70e796dda1ea13bd5c15c3dc4d0cea86387d60fc17e2887f9a61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efadf21c49a857a3b843092ef202b4f7b38efb02318b964bcf53e281f029efec4798af30e0cba87f30e87bd36ed88d09deae0f17598a19d51c70ead1f86fd30d1996f4a21b3e6c6f8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbb3d39589350bf5760a61245f3f2f4ff8dc839dc1c8a5d47d3b8781e710833e4ced0cefdb39e2b5696784ee54078faf230ced8c3a7668fd08ec076556e62866cbb3cb9589350bf576096124df215e9eb01fdb158c5c4af563478087a39f676a67d88f0d786dda15a13bd5c15c1d606867d4b143eb03b01f945999a3982dcf6e5726d62cd4db2d84917c877979c27e6c77307229d58f0d000f473fcfd4ceb01f3beab5697784ee540773f528433ba38e1d5a3f0afb419995398ad9f2ec716562cd42bd3d4218c9778497a7908536d352aa1f3b0a3c1cfd3c533bc37eec16af4d7b2274a73a98abb730b433ead8a1f55b603fa48dd9f2ec756562cd42bdbd4218c937c0cb131e5f7b83914ba9e3eb16e0e1e87f98da191e5fc7bc36ed8dd09dea60ae1e636867d4b143ebc7603fa48dd9f2ec736562cd42bd7d4218c9779497273cbef605239752c7d731e0e1e87f98da191e5fc7bd36ed8bd09dea60ae1e676867d4b143ebc7613fa48dd9f2ec776562cd42bdfd4218c987e78bfd4c3c398f2717a1c5448cdde0c56ea890d88d5eecc60a89ad79ae795e09b135cf35cf2b21b6e6b9e67925c4aed45c53cd2b53f3cc79d43c731e35cfa8e62235ff6372b13bb15fa98258c798da894b1f94717c8e9635c278160be3e914c63357184f4118cf0c613c5384f12c17c6532d8c272f8c6789309e15c278e609e399298c67aa309e1a613cab85f1f40ae3592a8ca747184f97309ef9c278da85f1cc12c6b352184f56184fab309e5a613c2dc2789609e359278c6781309e26613cf5c27872c2780e08e3a913c6b35e184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc2782609e359248c678e309ee9c2781a85f14c16c69311c0930dcefd3d0afe9ea01a7c747fff7ef03dcb950f80af2a22066de738f868fc94b661fb9b754de73254c1676e8de07a56443c8a736bc467c743778cd507eb14af1e386e15c23359184fa3309ee9c278e608e359248c6792309e06613cd384f1ac12c6335b184f87309e85c278ba85f1ac17c653278ce780309e9c309e7a613c4dc2781608e359278c6799309e16613cb5c2785a85f16485f1ac14c6334b184fbb309ef9c278ba84f1f408e3592a8ca75718cf6a613c35c278a60ae399298c679e309e15c2789608e3c90be3a916c6b35c18cf14613c3384f11484f1cc15c6d3298c67b1309e35c278aa22780e30f1c43d4fe18080d8763d0fbad8250bef8fc7ef000f788cb47e0c18919778f24c3c71cfa0c80b886ddb4fdf25680e2e0befe3efb8b8722aef31d27a544ee17d69ab9978e29edbb15a406cab058d5dd23d0059781f7fb7c09553ab3d465a8fcaa9465e9ef07f4bb404239752f71ae131c7b10f99da99c7e32fc16768443e8bbac5d30a9fa13a1ef7c9c7f507144f9995398ed9f2d0dc05b1e2f96c3c7ef7361ac6a8f32b034fd83fb606239752fde331e0e1387f30b533ecc74e786d6a8dd09dea60ae9e606867d4b143eb2722623707c96a7172145a9c8ce03939ce5a50bc72990fa4905982ce9667952b136b16eaad12c248be3c2f4fd83fae0a462ea5fac793c0c371fe606a67d8279cf2dab42a4277aa83c7d7298676461d3bb47e0af64339cc2752c8ac3a8f8dd9f2d01832b166a15e410823f98eb1f214f25968332da5fab153c0c3d1cf33e91ef663835e9b0a11ba531d3cbe0619da1975ecd0fa20ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e8b78dc49a857aed4218c9779295a738efd01e8c5c4acd3b0c020fc7bc0c93eee1bcc369af4ded11ba531dccd5d30ced8c3a7668fd34ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e899dbc49a857a1d4218c9778a9727fcdd564730722935ef701a7838e66598da19ce3bdce6b5a9234277aa83b97a1b433ba38e1d5abf0df683322b7314b3e5a1675b116b16ea750a6124df202b4f71feb43318b994eac76e031e8e7e9e49f7b01f3be3b5a9334277aa83b97a86a19d51c70ead9f81fd500ef3891432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efa9f6bc49a857a5d4218c9779a95a73d9c77e80a462ea5e61dce000fc7bc0c93eee1bcc359af4d5d11ba531d3cbece32b433ead8a1f5b3b01f263af38914326b6e8c0fb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb384dcb03cddae4cac59a8d72d84917cb7f1f284cf3de80e462ea5eedb390b3c6718f4616a6778dfce90d7a6ee08dda90e1e5f430ced8c3a76687d08f683322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6a5543f36043c1cfd3c533bc37eec76af4d6b2274a73a98abb733b433ead8a1f5db613fa48dd9f2f4b832b166a15e8f1046f2e179b9878927e7f1e422b4385fb1ed7aaf2bd7bbd72cbcdf0b8c5cfd618fc748eb98e3c84b3cbd4c3c0d1e4f438416e72bb66dff3a579ee65eb3f0fe3a60e4caa95e8f91d6a372aa0178d631f1347a3c8d115a9cafd8568bf5ae3cddbd66e1fdf5c0c89553eb3c465a8fcaa946e059cfc413d727ad1f87d871c7d778c48ecb95f188ad9aabe6aab96acea979e63c6a9e398f9a675473519a335c4785e3bd142300065cfaa08cdf1538ae3d99da998ffa3eb6de6b137e1fc33187f3f57d439995398e9969dca223ebc5267d028f879621662dc673dcb4d76b531ac64d4b319f4821b3ea3c36661bfb8ee4637764bdd8a44fe0f1d07207b3164ced0cfb833b83688d295e0eea609edec9d0ce0cc4a56dd3fa9db01fca613e914266d5796ccc36f65d89c72e3e4f1e63933e81c743cb5dcc5af0b4b3d81fdc1d446b4cf1725007f3f46e867666202e6d9bd6ef86fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec67271ebb387e8fb1499fc0e3a1e5d9cc5af0b4b3387e7f4f10ad31c5cb411ddce7f730b433037169dbb47e0fec076556666556666556666556666556666556666556666556666556666556666596cd6c633f27f9d8e1ef713036e913783cb43c87590ba67686e3f7f706d11a53bc1cd4c17d7e2f433b331097b64debf7c27e5066658e62b6b19f9b78ece27c1ec6267d028f8796e7326bc1d3ce627f705f10ad31c5cb411ddce7f731b433037169dbb47e1fec8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9c6be3ff1d8ede1f83dc6267d028f8796fb99b5e0696771fcfe81205a638a97833a98a70f30b433037169dbb44ef12a81f9440a993537c68759734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426ed8d8cf4b3e76f87b768c4dfa041e0f2dcf63d682a99de1fd2f0f06d11a53bc1cd4c13c7d90a19d19884bdba6f507613f28b3324731dbd80f251fbb90f562933e81c743cb43cc5a30b533ec0f1e0ea235a67839a883fbfc61867666202e6d9bd61f86fd903666dc7f99e46287f76d528c2af76a7dcf77e56af0bdc0956bc0f74257ae05df8b5cb90e7c2f76e549e07b09b48d7c2f75e595e07b992baf07dfcb5d791df85ee1cabde07ba52bf780ef55ae3c04be57bbf2ede07b8d2bdf01bed7baf29de07b9d2bdf05bed7bbf2dde07b832b3f1b7c6f74e57bc0f726577e0ef8deeccaf782ef2daefc5cf0bdd595ef03dfdb5cf97ef0bddd951f00df3b5c7929f81e89f0bdd3959f07be77b9f283e07bb72b1f00df7b5c790af8deebca53c1f71750a6d7f7b9723df81e75e51cf8deefcad3c0f701576e00df075d793af83ee4ca8de0fbb02bcf00df475c7926f83eeacab3c0f731576e02dfc75d7936f83ee1ca73c0f749579e0bbe4fb9f23cf07dda95e783ef33aebc007c9f75e585e0fb9c2b2f02dfe75d7931f8bee0ca4bc0f74557c6fdfb97aefc10f8a85f79187cd4af3c1f7cd4afbc007cd4afbc107cd4afbc087cd4afbc187cd4afbc047c94772f051fe5ddcbc04779f772f051debd027c9477af041fe5ddabc04779f76af051debd067c9477af051fe5ddebc04779f77af051debd017c94776f041fe5dd9bc04779f766f051debd057c94776f051fe5dddbc04779f776f051debd037c94778f808ff2ee9de0a3bc7b17f89a5df9dde0bbc095df03be0b5df9bde0bbc895b19fb9d895df07be4b5cf951f0515ff87ef03dc3953f00be65aefc41f02d77e50f816f852b7f187c2b5df923e05be5ca1f055f8b2b7f0c7cadaefc71f0ad76e54f802fefca9f045f9b2b7f0a7c0557fe34f8da5df933e0eb70e5cf82afd3953f07be2e57fe3cf8ba5df90be05be3ca5f041f9dc7a99fb1c7b33d2e4907d2c8faa8cdad116d21df64684b5f90ec351dc5a26dd37a3b30d23e288c3f6361b48c6d1ea3e5e964d00cf38a9652df993a81a7838187a99de177a62eaf4ded5e9b7250e719d0ce2e867666202e6d9bd6bb2036c73e472d6add7697795ad4601d7742b3e7d3523ad2366cfe1622dad2c3dc16da36f54b3de310bbdb8b9df762637f4c4ba9e3ab1b98d73030dbedf626bfddf0f85aebb645394571f2d0a675a041526dc2d819671487fc35509edf345c97ea911e74fe22769bcbb42f91ddff5ca7f7b91cd4e989687f5f906cfb7b3d9e5e8fd9ee9386a6610e86e321cc811e8f83d6f3a05d6f8c763da01dd5c1f35f0b93766b3c1e5a6f011ebac6e9021f5d2b103f5e67b58e03b7dfef75457093af1b185b22180bc93386d73a2d1e23ad1780917c6b80a79b49337f5f2ff3f4c1f3729d57873e5b037556c3b9311b51d71e774b33c3eda2efe07f0c92edd3eb18f4c2f18100f4093c0d03d08bda59cbc03335181e23383b3478a6ff9681cb07fa8f6400adc6c3c4d74c4433aac087e5ea085f108c1c0ac121591a0ac121d92a4f161c82a1faf6ab946d160d370c9c3c3ef4cc5303a70e9fb9fbf4d0c091bd83b72075ad478fa4712d4052f4d13239181eb4e90b929d8ca9f362954a9ec9f03a09dea73af9a7b7b431b5333ce94df1da54e7b52907756ae1bd290cedcc405cda36ad4f89889d6047146a3175145a4c8de0993ace5ae0c037f9f048a5f771f2a4ca6b0b1ed1d8263fcf136d10055c0adbcf3838fb9e3dd86b5d632605c33b9b7a4f7b456b77821d31b5672d3b226a47406d17644738ed88a63da9d9114b3b42694724ed08a41d71b4238c7644d18e20da11433b42d81c144700ed889f1de1b3237a9700db5781d77eabb667483b226747e0ec889bbdb2b25700f66ac45e7ddb2b453bfa61af10ec374b3bca60cfb6f64ac69ea5ed99d55e29da2b447b456faf70ed2cd506631b9dd69b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1cb82e2e8fae5c6ae3076a5b1671abbcad8d5c6ae3176adb1eb8c5d6fec0663371abbc9d8cdc60e1aeb3776c8d86163478c0d183b6aec1663c78c1d37f62c63b706c53b744e1a3b656cd0d86963b7193b63ec6c509c31b333647646ccce80d9192f3bc36567b4ec0c969db1b233547646cace40dd1f146798ec4c919d19b2b3027616c08efadb51fe1706c5517c3b6aff92a0382a6f47e1eda8bb1d65b7a3ea7614dd8e9adb51723b2a6e47c1eda8b71de5b6a3da7614db8e5adb516a3b2a6d47a1eda8b31d657e24288e22db51633b4a6c4785ed28b01df5b5a3bc8f06c5515c3b6a6b4769eda8ac1d85b5a3ae7694d58eaada51543b6a6a4749eda8a81d05b5a39e7694d38e6ada514c3b6a694729eda8e4978c3d66ecaf8cfdb5b1bf31f6b7c6feced8df1bfbb2b1af18fb0763ff68ec9f82625efeb3b17f31f63563ff6aecdf8c7dddd8bf1bfb86b16f1afb0f63df32f6b8b16f1bfb8eb1ef1afb9eb1ef1bfb81b11f1afb91b1ff34f663633f31f653633f33f67363bf30f64b63bf32f66b634f187bd2d86f8cfdd6d8ef8cfdded853c1f0ec0676227f702b34d2de3f343470f2f450f3d060f3c9db4f0c1d3f7de2eee63b8f0f1d6b1ebc63e0ccd1138377e287dfe7ba2d9a46d874e64cffddcdc74f1d19b8ab79f0f6a1e6c1a3cd87066f3f75e42c7ee8cbee430bcf8dd87fe4487cb06f553d0dd2ef8e31e82fdde768826657e9b63d3116419e1acb8766568fad4197bab30e7d7bbfa278b5db7cf6c4e05073bef994f9db7fc27c66e0486b33be77d6887c76a8f9ec50ff99a1e6a367064f36b7b5e276af9d328646d4348de143ad4da36f79f0ffd2fd24f2250a0400", + "packedBytecode": "0x000000028df71de500000047df1f8b08000000000000ffed9d779815c5baee7b604074cd8898b3830915816118f200833967141111866100058628823991a3398224c95940411110c3ce3927756f773c61ff75ef39e7deebb95d6bd577e69da27a316bec5abc6b56f5f3d4acea6faafbfbd5db5f57a7eaae7f06415010a4a6e6613a3f387492ff57eadfd26f36758e715da52e390b7284b3598e7036cf11cec21ce16c91239c2d7384f3a81ce16c95239c47c7c8a9d89a05f5a7b8798f71a06bdc8c891cd3b42807342dce314d8fcd014d5b07b9d1461d97239c6d7284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce13c234738cfcc11ceb37284f3ec1ce13c2747384b7284b36d8e709e9b239ce7e508e7f939c279418e705e1823677be06ca77f2fd2bf17ebdf4bf4af94bd54ff76d0bf1d751d0bf57c27c51526f590a6ccf85f97309587a96b98ba19ffeb1ea61e61ea19a65efa7f25fa7fbdc35411a63e61ea1ba67e5a83fe61ba2c4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e300d08d39d61ba2b4c03c374779806192cf784697098ee0dd39030dd17a6a1611a16a6aa300d0f5375984684a9264c23c3342a4ca3c3747f981e08d398308d0dd3b830d586697c9826846962982685697298a684e9c1304d0dd343619a16a6e986660f87e991303d1aa6c70ccec7c3f444989e0cd353617a3a4ccf84e9d930cd08d3cc30cd0ad3ec30cd09d3dc30cd0bd3fc302d08d3c2302d0ad3e2303d17a6e7c3f442985e0cd34b617a394caf84e9d530bd16a6d7c3f44698de0cd312cd223bc2d230bd15a665615a1ea615615a19a655617a3b4cabc3b4264c6bc3b42e4cebc3b4214c1bc3b4294c9bc3b4254c5bc3b42d4cdbc3f44e9876846967987685e9dd30bd17a6dd61da13a6f7c3f44198f686e9c330ed0bd3fe301d08d347613a18a68fc3f449983e0dd36761fa5698be1da6ef84e9bb61fa5e98be6f68fe8330fd304c3f0ad38fb5ed27faf7a7baacdcbffb59987eaef3bfd0bfbfd4bfbfd2bfbf3696f94d987e6bd87e17a6df1bb63f84e9739dff42ff7ea97fffa87fffa47fbfd2bf7fd6bf7fd1bf7fd5bf7fd3bf7fd7bfffd0bfffa27fff55fffe9bfefd77fdfbcf30ed699bcab70aeaa6ca20a636aabc26f9ec47c46f17d49f9416cdf5ffe4b744db0bf5bcfc8a762df47c0bc3de52cfb734d6d34acfb732ec6df47c1bc37e829e3fc1b09fa4e74f32eca7e8f9530cfbf97afe7cb02702b837acedcad65c9b0ac026f1da0c6c2db4ad39d85acaeac07694b6b5009b6cdf96603b5adb8e02db31dad60a6c096d3b5ab40c5391b6550671c54ae930b5dee2b8d7ab9f971d1b3fef70b5ded68e788f8b9f77845a6f1b07bc2a3e8ed7eb3a0ee2e6046d6b03b613b5ed78b09da46d2780ed646d3b116ca768db49603b55db4e06db69da760ad84ed7b653c17686b69d06b633b5ed74b09da56d6780ed6c6d3b136ce768db59602bd1b6b3c1a69bdce01cb09dab6d25603b4fdbda82ed7c6d3b176c1768db7960bb50dbce079bb4bf17804dce172fd436d5761c5d00cb68bbb45bc965a4cd06dbc5d25e83ed1269abc1d65eda69b05d0abec5d601da1ab175d43669b7d4ff7ae97c6510d77e5256a3d6db3beef5866b56ebed13ff7a93cf1cfb06755a57829fdea0553f9d8fb15f5367f45da093f8117b21e4af83b2524ef490638fb0ab634c85cef74bb35c2f63b962285361a97f65106ffdfb183c7d0ce616907713b35dbaf8986df09471cc0e84b266ecc97950538cd91b81c341cc76f731dbe029e398ad81b266ecc9b970538cd97b80c341cc56b989d9b2521fb3a9fb6641608f3db91e6a8a313b1a38e28fd9ae3e661b3e651cb34f415933f6e49ab829c6ec54e0883f66bb57f97383064f19c7ec22286bc69edc9f698a31fb2c703888d91adfce3678ca386697405933f6e45e61538cd9e78123fe98ede92866bbf8980d52cf4083c01e7b72dfba29c6ec32e0883f6687fbfbb30d9f328ed9dd50d68c3d7986d2146376b3ceabe70c3fd1cf19ce04db4fb5ed2ce08d3fb6abbb3a8aed321fdba9be2141608f51799ed71463fb439d5771fc0be88f20b65f6a5b5bb0fd4adbce05dbafb5ed3ca897837da0caef030d9e32de077e0b65cd589667cb4d711ff811703888d96a1fb30d9e328ed9bf435933f6a49f43538cd93f00878398adf131dbe029e398fd0f286bc6de453adf146356fa9aaaf3852ff4f9c22560fb52dbda83ed8fda7629d8fea46d1dc0f695b67504db9fb5ad13d8fea26da560fbabb67506dbdfb4ad0c6c7fd7b62e60fb87b69583ed5fb4ad2bd8fe55dbba81eddfb4ad3bd8fe5ddb7a80ed9fdad653dbd4f32ee97b25e7adad80bf328877db4abf4b59b7cc77ce82efd686efd659f4ddc6f0ddc6e2bbcc81ef04f890a9c098af847c995b9ed262e0415fe5f1fbeaa2eade256878ddcb81a7ab83ba27c0474378ba024fb7f87992fd7fbbc7bfdee436ee62689a005f5da05e3d1cd4ab007cc9ba655efc15830ddbd61e16c69ef1339615802f59b7ccf70446b1615b2fef5cc9fea38e87ed0aea781dec4bc97322f127df2d138e72b04b995bdbd6b1b5d76c45f07f3cee75336c8ee2321917e24bd62df3e2af08ead32dfb8c650d65ec6a30ba6a230ac097acdbfbaedb0e92c7e3b8836b1d6b9b26be7b67c1774fc377b9e11bdb4e99d21ddb7a0273ecd79cfad85611ff7a4bf1fa44ae0dc50f9e3fe0355c5c7542df726d287ec45e08f99b0aeaca4a39d143da616157b12cdb12d9cde57a18cb154399de96fa5706f1d6bfc2e0a93098d536b91c8e850ef687640cf4363864be1cb4ab88d0ae376827652e02ed5cb567bd0c1e99ef063cd28e75071e57d744513cd9b81e3b9c6f3c87c5eb67f93f9e07b8da5e9d0d4699b76daf9ec0683b5771703d93f65ca52b308aad17f07471a459d476ed42e2db41ac24db23f121e7e6b2ff7603bb94e9a95fa8536de5fdd056ba88118c47991a7acd1bff762a4b5e8377cd8007b79d83ebaace8ee2b114efdf7c1dc41b6b66bbd4d5d02aea1e8fabb6bc8bc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae1b09a3d9ffcdd57dfee4f70ff5ba64fdeab9ceff71da1facac14fbc7483f884b8c3a174299e2667565ff1bfa8399cfa9b08f6437b7da25b725f6c7ac8479f1877dad705b32f4772a89cd77d97057cfdbd437c0d47734cdbe9fdd2c9abae8ff8c9a16189a627ffc4b0d1e15a715cdebd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd2ca8df7ee071c655ff1d69abe579796fc377219439a359ddb691be5532c670176339ecf723eb96652e017b85b1eed67a59e16861acbf3b2c2b65ce8636757fb33acd1cb4956599f65dc7e7e6f11f8753cff1bb64c0d319785cb4338ece374a711f88fb39bed93fcd761e2365b06f9f837e9569fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43f279867cab4cd69ffc5e70b33abfae9fc3c933a7f6469df1ddd17f36ab2bbb5de78b8243fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77ea39be8bb121e4397e1743d7728ba6aef6577cc68a9ae2fedad5e0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b675e06adb9795ba6c37f0bb2995c1a1f18ddf53f921b47d3fd679ecc3817d47beb0fc5fa674cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb33aeab40a7fe86068590ffbc595d59292765456b6157fb887c0306d9cde5ba1acb154399be96fa5706f1d6dffcd66a3f83596d939f419c7d01c77f576d52df088d2e018da40c9e07b9ea9367b69166ff46ecb7d7d22883e72c52e66fd04645f51fb5f53974751c8bea73683b37ee0c8c661dcd7e9ef9de4feb3fa1bd88bb9fd67f420c613fadc0587f7b58bf70b50ca28f2d52e6ff19eb37cfc96519ec07f63ffd9fe07b2e653a9fc939f991babeb29d93e372517557ccf81db4ca189931269005cf13a4cc315a6bd9661511dc3d2dcb16472c2b5a99df0a2b0a0ed5cfcd77d652fb7c3fa32e12d7f80d72297302d4c5cd794bea1cd0d537e52aa14e2a5f66a9ab943915f6b5d3753e01db09f7db8b2dff9729dd39208ee17e59fc754e6edfcb81b312fca0ef2b803526df9dd1b79c038a1fb11742fea2e67565a59ce8215a0bbbda47e43c0ad9cde57a1bcb154399fe96fa5706f1d6ff3283e73283596d93b320ce2e867ee8aedaeafe111ab5078da40cde53b47d07d4768c71d5b73fea1853068c66bb89c749976ce67b42e67d35db3982949165f11ca13bb4b3094b59f37ea11c2fe3ec378cef4a7407bff8ae84ab6f37f702dd2a611ecf0b8ea46f17dfb155fea2c64ce89505df51632664c3771bc3779b2cfaf69a7bcd993477300641f2fd33fc66a99ad29d97e2b804b25c33607431964322a8ffedf1c331e2f80eb25c736074717cc8f4dbe7dd8151962b044617ef96e2f81b0d61c46f0ce3715e181d7c2bb67363bf158bf7f45a0223d33b9bf86cea286074710fb5b1efeae1f97c2bf875352e51970c18f17c5e963b1a185ddc1bc767830d61c4eb2259ee186074f10c2bd3f19df0dbf3786fd92563ba63bbe3be286599de7ba970cb93f65c037d3b18d730a905de673c9c167ddcf2a43df741df0eeefb25b5c071060fa7053e1b7431ee6122a8ff1cee703cf8fc52963b1e182b1d31f6cb80b11218ffe75e3130f677c4589901637f6014fb89c0e8e0fe6b92b17f068c789f52963b09182f77c47859068c9703a32c773230bab8979a00bf0d61bc021865b95380f14a478c5764c0782530ca72a702e3558e18afcc80f12a6094e54e03c6ab1d315e9501e3d5c028cb9d0e8cd73862bc3a03c66b8051963b0318af75c4784d068cd702a32c7726305ee788f1da0c18af034659ee2c60bcde11e37519305e0f8cb2dcd9c0788323c6eb3360bc011865b97380f146478c3764c0782330ca7225c0789323c61b3360bc091865b9b6c078b323c69b3260bc191865b97381f116478c3767c0780b30ca72e701e3ad8e186fc980f1566094e5ce07c6db1c31de9a01e36dc028cb5d008cb73b62bc2d03c6db815196bb1018ef70c4787b068c7700e3ed16c6018e18efc880710030ca729702e39df13326afa50764c07827f0dc153f4f52b33b33e0b9cb2d4ff2bb7a775a7cdd1dbfafe4b6181834bcee7703cfa0f87992dbe2ee0c7884a1189643cdee899f31a9d9a00c18ef019ec1f1f32435bb27039ec1a0d93d16cdee8d9f31a9d9e00c18ef059e21f1f32435bb37039e21a0d9bd16cdee8b9f31a9d9900c18ef039ea1f1f32435bb2f039ea1419d66f759341b163f6352b3a119300e039eaaf879929a0dcb80a70a341b66d16c78fc8c49cdaa32601c0e3cd5f1f324351b9e014f356836dca2d988f819939a5567c03802786ae2e7496a3622039e1ad06c8445b391f1332635abc9807124f08c8a9f27a9d9c80c78468166232d9a8d8e9f31a9d9a80c184703cffdf1f324351b9d01cffda0d9688b660f3862bc3f03c6072c3c717f27fb7e8bafb18eea3e266878dd85a11896c37e12e31c318ecd80711c30ca72d84fa2d611e3b80c186b8151964b38664cd74fa2167c8f8fdf77b25daa0d1aaecf78b73c69fb49a0ef098eb4181f345c8b096e79d2f69340df131d69312168b81613816792032d12e0a3213cc2500ccb613f89c98e182765c03819186539ec2731c511e3e40c18a700a32c87fd241e74c4382503c607815196c37e12531d313e9801e3546094e5b09fc4438e18a766c0f81030ca72d84f629a23c68732609c068cb21cf69398ee88715a068cd3815196c37e120f3b629c9e01e3c3c028cb613f89471c313e9c01e323c028cb613f89471d313e9201e3a3c028cb613f89c71c313e9a01e363c028cb613f89c71d313e9601e3e3c028cb613f89271c313e9e01e313c028cb613f89271d313e9101e393c028cb3de09831ddf5cb934ddc77d4b54a53f71d755dd2d47dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993efa71cf84e800f990a8cf94ac80b43312cf780676cd28cc853121f4f29d61d7d3d4d50f7a72d3c058eea8ebe9e21a8bb30e41ae35339c088fbb8d7b1f18c8e752c6b2ca3e279d611cf3319f03c0b3c331cf13c9b01cf0ce099193f4f32a66664c0230cc5b0dc0339c0f8540e307a1dbd8e4c8c5ec7fcd1d1337a46cfe8198f04632eb4e19e3127e2b1acb18c8a6756fc3c49cd6666c0330b3493e5eeca01c6a77380f129b78c658d65543cb3e3e7496a362b039ed9a0992c77975bc6b2c6322a9e39f1f324359b9d01cf1cd06cb64533078c658d65543c73e3e7496a3627039eb9a0d91c8b660e18cb1acba878e6c5cf93d46c6e063cf340b3b916cd1c3096359651f1cc8f9f27a9d9bc0c78e68366f32c9a39602c6b2ca3e259103f4f52b3f919f02c00cde65b3473c058d65846c5b3307e9ea4660b32e059089a2db068e680b1acb18c8a6751fc3c49cd1666c0b308345b68d18c95f1811c607c2a07181deb58d65846c5b3d811cfa20c781603cf738e781667c0f31cf03c1f3f4f32a69ecb8047188a61b9077280f1a91c60f43a7a1d9918bd8ef9a3a367f48c9e3133c6a77380d16f6bcfc8cae8e0fa2aedbb48cf3571df51ef223575df51ef223575df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f771cee4fb85f87d9765fa8d991780c7c5376f1cd5b354adf745bdaeaf63d44f69f592a1d5738656c550e645d0ef2507fa15805f59b7cc8bbf4c99db11303bf25d766cb88ea3a1fee2e329430fe5ff6547758f6aeb5f6ee2bea3dafaa6ee3baaad6feabe7d9cfb38cf07df3ece7d9ce7836f1fe73ece597c63be455077de2edf3f55eb7845e70bf5bc947f1aec52e6e1a352bfad03bf0fb9f0edf7217facc807df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b738c870959e0090c9e200dcf2c329e6a329e81643cd793f1f423e3594cc6f310194f0f329e31643cf791f1dc46c6f32419cf55643c8f93f17426e39944c6339b8ca7868c671019cf8d643cfdc978a693f17420e3e946c6338e8c671819cf1d643ca5643ccf92f15c43c6938df79732e1e948c65341c633858c670e19cf28329e8bc9780693f15c44c6733319cfe5643cc792f1b426e32927e379848c673c19cf70329e3bc978ae23e3e94bc6b3888c672a194f4f329eb9643cf793f1cc20e31942c6732b19cf95643c9790f13c46c65346c6d39c8c672219cf08329ebbc978da93f1dc40c65349c6338d8ca73b19cf3c329eb1643c43c9786e27e379868ce76a329e27c8787a93f14c26e31949c6730f194f3b329e9bc8782e23e32922e32926e3e94ac6f33019cf7c329e5a329e99643c55643c03c878ae25e3e943c6b3908ce741329e5e643ca3c978ee25e3b9858ce70a329e4e643c8f92f11c47c6d3868ca70b19cf02329e02029e4470e8182609f8ff0b606b662cab3efbfa42dbbaffbfaaedcd6099d774beb965ddaf824dbe25fb9a6559d4e955a84ba5ce977eb329a913faaa8479f157041caf91f02c20e3e942c6d3868ce738329e47c9783a91f15c41c6730b19cfbd643ca3c9787a91f13c48c6b3908ca70f19cfb5643c03c878aac8786692f1d492f1cc27e379988ca72b194f31194f1119cf65643c3791f1b423e3b9878c672419cf64329ede643c4f90f15c4dc6f30c19cfed643c43c978c692f1cc23e3e94ec6338d8ca7928ce706329ef6643c7793f18c20e39948c6d39c8ca78c8ce731329e4bc878ae24e3b9958c670819cf0c329efbc978e692f1f424e3994ac6b3888ca72f19cf75643c7792f10c27e3194fc6f308194f39194f6b329e63c9782e27e3b9998ce722329ec1643c1793f18c22e39943c633858ca7828ca72319cf0b643cd790f13c4bc6534ac6730719cf30329e71643cddc8783a90f14c27e3e94fc6732319cf20329e1a329ed9643c93c8783a93f13c4ec6731519cf93643cb791f1dc47c633868ca70719cf43643c8bc978fa91f15c4fc633908ca79a8c671619cf040bcf0b8e78e47d7759b7ccbf40e2dbc1762855eb7ddd519dded0eb6aa1d72bfce2af10cacc3c26f5ab9e0fe1b2c2657e9f00efc5bd011abde1a82eb23d0a8ced83be5f71e4dbfc5eb3ccbfd2c47db7367cb7ce13df6d0cdf6df2c4b78f731fe7f9e0dbc7b98ff37cf0ede3dcc739936f07d70665f89d34990a8cf94ac8e3f5828befcb39aa67bdebc4af63d44f69f5a6a195796d550c655e07fdde74a09fedda53e6c55fa6cced0898312e4a8278e36249fc752a53fd328f065d9718fa62bd963ad234ea18b2b489fb8e3a863475df51c790a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc9f75b3a1fe3756329fa50cf17e57ae02df0bb5ce70b62f4abd6b54cafab50af5b3896835dca344ba47e5b077e9f77e1dbeff3fed8960fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c9b79e92f7e11b0b9eacf1f158bd97897e048fa8e8ac5a6ee3b2a169bba6f1fe73ece997caf70e03b013e644ad7c76f05f02c73c0e3a89ec9671b2b8d3abd60d4a918cae0317ea5837a16805f59b7ccaf041e9926008f8b3868c836479e59643cd5643c03c978ae27e3e947c6b3988ce721329e1e643c63c878ee23e3b98d8ce749329eabc8781e27e3e94cc633898c6736194f0d19cf20329e37c9786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e8e643c15643c53c878e690f18c22e3b9988c673019cfcd643c9793f11c4bc6d39a8ca79c8ce711329ef1643cc3c978ee24e3b98e8ca72f19cf22329ea9643c3dc978e692f1dc4fc633838c670819cfad643c5792f15c42c6f318194f19194f73329e89643c23c878ee26e3694fc67303194f2519cf34329eee643cf3c878c692f10c25e3b99d8ce719329eabc9789e20e3e94dc633998c672419cf3d643cedc8786e22e3b98c8ca7888ca7988ca72b19cfc3643cf3c9786ac9786692f15491f10c20e3b9968ca70f19cf42329e07c9787a91f18c26e3b9978c672919cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243dffd4fc0ffdf049bbca3fe02d856e9fc32b035b3f868aef32bc156a8f3b28ea3c2b4b4eda1eb469d5cbd978fbe2a615efc1501c72a129e05643c5dc878da90f11c47c6f328194f27329e2bc8786e21e3594ac6732f19cf68329e5e643c0f92f12c24e3e943c6732d19cf00329e2a329e99643cb5643cf3c9781e26e3e94ac6534cc65344c6731919cf4d643cedc878ee21e31949c633998ca73719cf13643c5793f13c43c6733b19cf50329eb1643cf3c878ba93f14c23e3a924e3b9818ca73d19cfdd643c23c8782692f13427e32923e3798c8ce712329e2bc9786e25e31942c633838ce77e329eb9643c3dc978a692f12c22e3e94bc6731d19cf9d643cc3c978c693f13c42c6534ec6d39a8ce758329ecbc9786e26e3194cc6733119cf28329e39643c53c8782ac8783a92f15c43c6f32c194f2919cf1d643cc3c878c691f17423e3e940c6339d8ca73f19cf8d643c6f92f10c22e3a921e3994dc633898ca73319cfe3643c5791f13c49c6731b19cf7d643c63c8787a90f13c44c6b3988ca71f19cff5643c03c978aac9786691f14cc80e4f997ab75dde9d0c800ba74ac8af049e371de8e3a89ea5f85d83af635cafd2ea6d43aba58656c5506605e8f7b603fd0ac0afac5be6c55f2e322b1e39a71356fc0ec493248c627bd32d4f72bf7d32a83fa5db6fdf061e17ed9aa37a26f7afd5469d9eb4e82e653056573ba8a76ddf91f9d5b01d728d59f13ca3f3c29a8072cf90308a6da55b9ee4fef54c507f4ab77fad061e17ed8fa37a26f7af35469d9eb1e82e653056d738a8a76ddf91f935b01d728d59f13cabf3c29a8072cf92308aed6db73ce509a8b34ce9f6af35c0e3a2fd7154cfe4feb5d6a8d3b316dda50cc6ea5a07f5b4ed3b32bf16b68367f6cc3666c5237db1853501e56690308a6db5539ef2d204d459a674edd85ae071d1ce3bd23dd98ead33ea34c3a2bb94c1585de7a09eb67d47e6d7597c9704f16ab1be015aacb7f0accfb216e22f53e61539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5cca0b3e291b111853501e56692308a6d8d5b9ee47b413383fa5381315f09f9f5c0b3d6813e8eea99ec43bec1a8d34c8bee5206f7af0d0eea69db77647e036c874c98d7e520b3d7b971cc8a6796ce0b6b02cacd226114db5ab73cc9766c56507f4ad78e6d001e17edbca37a26dbb18d469d6659749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3755e5813506e3609a3d8d63be5294bbedf383ba83fa56bc736028f8b76de91eec9766c9351a7d916dda50cc6ea2607f5b4ed3b32bf09b64326cceb7290d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a678ece0b6b02cacd216114db06a73c5d92cf1de604f5a774cf1d3601cfc6d87952cf1d1ce89e7ceeb0d9a8d31c8bee5206f7afcd0eea69db77647e336c87a6cebc2e07997d6c6487d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f1ccd579614d40b9b9248c62dbe89627f9dd83b941fd295dbf9dcdc0b3c9813e8eea99ecb7b3c5a8d35c8bee5206f7af2d0eea69db77647e0b6c07cfec996dcc8a679ece0b6b02cacd236114db26b73cc9766c5e507f4ad78e6d011e17edbca37a26dbb1ad469de65974973218ab5b1dd4d3b6efc8fc56d80e9ed933db9815cf7c9d17d604949b4fc228b6cd6e7992edd8fca0fe94ae1ddb0a3c2eda7947f54cb663db8c3acdb7e82e653056b739a8a76ddf91f96db01d3cb367b6312b9e053a2fac0928b78084516c5bdcf29425a0ce32a56bc7b6018f8b76de513d93edd876a34e0b2cba4b198cd5ed0eea69db77647e3b6c875c63563c0b755e5813506e2109a3d8b6bae549ee5f0b83fa53bafd6b3bf0b8687f1cd533b97fbd63d469a145772983b1fa8e837adaf61d997f07b643ae312b9e453a2fac0928b78884516cdbdcf224f7af4541fd29ddfef50ef0b8687f1cd533b97fed30eab4c8a2bb94c158dde1a09eb67d47e677c076c83566c5b358e7853501e51693308a0d8f178b1df1141b3cc5162d8e946f35df5be78bf46f02fedf1b185db5878b0d4699c718475ed79ab536785a1b9a1d49dfaafe153a7facfec5ed55018c0cdbab7516346b63f0b431343b92be95167d74fe38fd8bdbab0f30326caf36c0e3a07d2e4f183c6a4a77beb1c3b13e8eea993cdfd819d875c7e39094c163f74e07f5b49d4bc8fc4ed80e9ed933db9815cf009d17d604941b40c22836bc4ed9153f4f79c2e05153ba766c97637d1cd533d98ebd1bd875df05ba4b198cd5771dd4b300fccaba65fe5dd80e9930afcb4166af73e39815cf409d17d604941b48c228b69dc0f35efc3ce50983474de9dab1f71cebe3a89ec9766c7760d7fd3dd05dcae0feb5db413d0bc0afac5be677c376c884795d0e327b9d1bc7ac7806e9bcb026a0dc201246b1bd0b3c7b62e7498d07843c6a4ad78eed71ac8f9b7aa6dab1f703bbee7b40772983fbd7fb0eea59007e65dd32ff3e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a67b0ce0b6b02ca0d266114db6ee0f920769ed47307e45153bae70e1f38d6c74d3d53cf1df60676dd3f00dda50cc6ea5e07f52c00bfb26e99df0bdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219a2f3c29a8072434818c5f63ef07c183f4f79c2e05153bae70e1f3ad6c7513d93cf1df60576dd3f04dda50cc6ea3e07f52c00bfb26e99df07db619f67f6cc1666c53354e7853501e58692308a6d2ff0ec8f9d27f5fc1479d494ae1ddbef581f37f54cb5630702bbeefb41772983b17ac0413d0bc0afac5be60fc076c884795d0e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d8f601cf47b1f374294d183c6a2a30e62b21ff91637ddcd433f5dce16060d7fd23d05dcae0fe75d0413d0bc0afac5be60fc27668eacceb7290d9c74676987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308aed00f07c1c3f4f79c2e0515381315f09f98f1debe3a89ec97e3b9f0476dd3f06dda50cee5f9f38a86701f89575cbfc27b01d3cb367b6312b9e1a9d17d60494ab216114db41e0f9347e9eb284c1a3a674edd8a78ef57154cf643bf65960d7fd53d05dca60ac7ee6a09e05e057d62df39fc176c83566c5334ae7853501e54691308aed13e0711077499e628347e63f25f0ade66b75be48ffe2f6aa054686ed559c05cd5a1b3cad0dcd8ea46f55fff13a7facfec5ed351e1819b657eb2c68d6c6e069636876247d2b2d26e8fc71fa17b7d7046064d85e6db2a0d9916c0f8fe4be7d24e3d46b7ee4342f38829a171c41cd0bbce6549a3b38be94e1b12c00069c2a21ff19f07c3b7e9ee47db9cf32e0f936f07c2b7e9ece8eea59aad6fb1d608f6bbd4aabef1a5a7d6668550c6590e1bb0ef42b00bfb26e99177f9ed9334731e3b9adb026a0dca7248c62fb16f0b8683754dd3be875c9fa5b84e9cb13ebfcba785e82f78a5be8f50a87f82b8432d34aeacafe59b315c1ff65bba9fa1c346c8ede61ee6c7b6e27f3e2af28c8dabddbb4f792510b17cf9b323dee1fb4f07c1d1f4f29eee7e8eb80a3ba67f2ecef808527c6ba778e7aeeb93ffeba27db8f8e7a5db27eb58ffed7894e352fc77d4fda8f8e469d0ba1cc8092bab25f43fb616b2b5cef9b724e6eee9bcd82baf64cb84ab4dd7c26f4b5b64bb98fa13cb639bdf52fee9fbda1aeaedac5a87b4cd82e9a6db74bedcde792a6ef62d0e56352cd6ccf2950c70a0b77050137c66336f73359b7ed195985a1239b66b8ad3fb6e8d8c7c2dd87809b71bfee63e8c8a6d9e1f6eb0116ee0104dc8cfbf500434736cd0eb75f0fb4700f24e066dcaf071a3ab26976b8fd7a90857b100137e37e3dc8d0914db3c3edd7832ddc8309b819f7ebc1868e6c9a1d6ebf1e62e11e42c0cdb85f0f317464d3ec70fbf5500bf750026ec6fd7a68505f4736cd0eb75f5759b8ab08b819f7eb2a434736cd0eb75f575bb8ab09b819f7eb6a434736cd0eb75fd758b86b08b819f7eb1a434736cd0eb75f8fb2708f22e066dcaf1bda6f9f75bfaeb570d7127033eed7b5868e6c9a1d6ebf1e6fe11e4fc0cdb85f8f377464d3ec70fbf5040bf704026ec6fd7a82a1239b66b6fddad1bb8419bfdbf889537d52634c7f9201cf47c0e322a61cc541a9a37e2ec9bea9fb0dad3e31b4c2b13b0e807e0efac2a4fd2681f8f3cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccf8cdf65c4e72b52ee631246b1e1332917f7f955dd3be975c9fa5b8469c0c9757e0fc4eeb7acb4c0f057091ce2af10ca9c7b4e5dd9bb355b5170e876c3b1b8715bee8bbd0ea96d69c6bfcc8bbf22a8cf7ee071f07e7e92e780c173c0a205be771a8fefb2e16e342e2b55dfc73b3aa8dbcefb8cfaa0a61fc6eebfbea60586a61f3af69d08ea6f4f61c0a912f2c8e3e2d9b0a37a26db82bd469d4c8d8ba14c3ba8e75e07f52c00bfb26e99df0b3c32e13379573118183c81451f999a91f15493f10c24e3399f8ce77a329e53c978fa91f13c44c6d3838ce768329e31643cf791f1dc46c6730e19cf55643cd93807cf84e771329ece643c2790f14c22e32924e3a921e33948c633888ce742329e1bc9782e25e3399d8ca73f19cf74329e6e643c1dc87812643ce3c8788691f1dc41c6534ac6d3968ce71a329e93c8782ac8783a92f14c21e36949c6338a8ce762329ec1643c1791f1dc4cc6732619cfe5643c8f90f19493f11c4bc6d39a8c673c19cf70329e3bc978ce23e3b98e8ce714329ebe643c53c9787a92f1b422e3b99f8c670819cfad643c6793f15c49c6730919cf63643c65643cc793f14c24e3694ec633828ce76e329ef6643c1790f1dc40c6731a194f2519cf34329eee643cc790f18c25e3194ac6733b194f0919cfd5643c4f90f1f426e339918c6732194f0b329e91643cf790f1b423e3b9898ce70c329ecbc8781e26e3e94ac65344c6534cc6534bc65345c633808ce75c329e6bc9784e26e3e943c6f320194f2f329ea3c8784693f1dc4bc6730b19cf59643c5790f17422e3398e8ca70d19cfa3643c5dc8780a087812c1a1df624ac0ff0f804dbe19f411d89a59d627cf61a5bc3a2eae6d7be8ba9b59d6fda1850175fa00ea52a9f3a5df6c4aea84be2a615efc1501c787243c5dc8781e25e36943c6731c194f27329e2bc878ce22e3b9858ce75e329ed1643c4791f1f422e379908ca70f19cfc9643cd792f19c4bc633808ca78a8ca7968ca7988ca7888ca72b19cfc3643c9791f19c41c67313194f3b329e7bc8784692f1b420e3994cc67322194f6f329e27c878ae26e32921e3b99d8c672819cf58329e63c878ba93f14c23e3a924e3398d8ce706329e0bc878da93f1dc4dc633828ca73919cf44329ee3c978cac8781e23e3b9848ce74a329eb3c9786e25e31942c6733f194f2b329e9e643c53c978fa92f19c42c6731d19cf79643c7792f10c27e3194fc6d39a8ce758329e72329e47c8782e27e339938ce766329e8bc8780693f15c4cc6338a8ca72519cf14329e8e643c15643c2791f15c43c6d3968ca7948ce70e329e61643ce3c87812643c1dc878ba91f14c27e3e94fc6733a19cfa5643c3792f15c48c633888ce720194f0d194f2119cf24329e13c8783a93f13c4ec6b39f8ce72a329e73c8786e23e3b98f8c670c19cfd1643c3dc8781e22e3e947c6732a19cff5643ce793f10c24e3a926e36946c633c1e0c1ffab77c3e4fc48be1d5408ff9fae3b97b7d6eb9232f28e92bad7f5be6153f5dde3a8beef07755325ccef81fa0afbfbc0f3be239e0f0c1ed37711e42b40b3dd864d31bee78871b7c128f3ef01a3e8b71b78763be2d963f098be8b20df07347bd7b029c65d8e18df3518657e17308a7eef02cfbb8e78de33784cdf45901f009aed346c8a718723c69d06a3ccef0046d16f27f0ec74c4b3cbe0317d17417e2068f68e61538cdb1d31be6330cafc766014fdde019e771cf1ec30784cdf45901f049a6d336c8a71ab23c66d06a3cc6f0546d16f1bf06c73c4b3dde0317d17417e3068b6c5b029c6cd8e18b7188c32bf191845bf2dc0b3c511cf5683c7f45d04f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37711e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf4590af02cdd61936c5b8d611e33a8351e6d702a3e8b70e78d639e2596ff098be8b205f0d9aad316c8a71b523c63506a3ccaf0646d16f0df0ac71c4b3d6e0317d1741be06347bdbb029c6558e18df3618657e15308a7e6f03cfdb8e78561b3ca6ef22c88f02cd561a36c5b8c211e34a8351e65700a3e8b71278563ae25965f098be8b205f0b9a2d376c8a719923c6e506a3cc2f0346d16f39f02c77c4b3c2e0317d17417e3c68f69661538c4b1d31be6530cafc526014fdde029eb71cf12c33784cdf45909f009a2d316c8af14d478c4b0c46997f131845bf25c0b3c411cf5283c7f45d04f9dbc126bcbdc0f686cef704dbeb3adf036cafe97c77b0bdaaf3ddc0f68ace7705dbcb3a5f0eb69774be0bd85ed4f932b0bda0f39dc1f6bccef705db733adf0f6c8b75be126c8b74be3fd816eafc65605ba0f397836dbece5f01b6793a7f25d8e6eafc55609ba3f357836db6ce5f03b6593a7f2dd866eafc75609ba1f3d783ed599dbf016ccfe8fc8d607b5ae76f02db533a7f33d89ed4f95bc0f680cedf0ab6bb74fe36b07da2f37780ed539dbf136c9fe9fcdd60fb96cedf03b66febfcbd60fb8ecedf07b6efeafc30b07d4fe78783edfb3a3f026c3fd0f99160fba1ce8f06db8f74fe7eb0fd58e7c780ed273a3f166c3fd5f97160fb99ce4f04dbcf757e12d87ea1f393c1f64b9d9f02b65fe9fc8360fbb5ce4f05db6f74fe21b0fd56e7a781ed773a3f1d6cbfd7f987c1f6079d7f046c9febfca360fb42e71f03db973aff38d8fea8f34f80ed4f3a8f63ddfe59e74b8278dbd9af82baa9047c8b3f55e62f3adfd22823cb1642998eba83a37ac6a1be652aedb0b4cbca26edf01b609376f875b0493bfc1ad8a41d7e156cd20ebf023669875f069bb4c32f814ddae117c126edf00b609376f879b0493bfc1cd82a757e31d8a41d5e0436698717824ddae105609376783ed8a41d9e07366987e7824ddae1396093767836d8a41d9e0536698767824ddae119609376f859b0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c30f804ddae1bbc026fbcb576093b6f913b049dbfc29d8a46dfe0c6cd2367f0b6cd2367f1b6cd2367f076cd2367f176cd2367f0f6cd2367f1f6cd236ff006cd236ff106cd236ff086cd236ff186c6375fe276093b6f9a76093b6f9676093b6f9e76093b6f9176093b6f9976093b6f9576093b6f9d76093b6f9376093b6f9b76093b6f9776093b6f9f76093b6f90f6093b6f973b049dbfc05d8a46dfe126c4fe8bcb4d5adc026cf8ad554fa0d271c8707cff985a93288b7edc7a912f28f43dd656a46c6f31c194f3519cf40329ef3c9784e25e3b98b8ce768329eb9643c2f93f1fc918c671d19cf5a329e9d643c3bc878ce21e3d94fc67302194f2119cf22329e1a329e37c8780e92f10c22e3b9908ce752329ed3c9783e21e3e940c69320e379918c673619cf1a329ed5643cef90f16c27e32925e3694bc67312194f05194f47329e96643c0bc8784691f1bc46c6733119cf60329e8bc878ce24e339968ca73519cf4c329ef1643ccf93f1bc4dc6b38a8c671b19cf56329ef3c878f692f17c40c6730a194f2b329e79643caf90f10c21e3399b8c670919cf25643cc793f13427e3594cc6b3928c670519cf9b643c5bc8783693f1b427e3b9808ce77d329e3d643ca791f11c43c633878ce725329ea1643c25643cbdc9784e24e36941c6b3908c673919cf32329ed7c9783691f16c24e3f98a8c673719cf7b643c6790f11491f11493f1cc22e3a925e379818ca78a8c670019cfb9643c2793f1f421e3398a8c673e19cf5b643c4bc9785e25e3d940c6b39e8ce75d329e5d643c6791f17422e3398e8ca70d19cf0c329e02029e0470046093ff3707db973a7f106cf2bd9efd60fb42e79780ed739d7f026c8f5a6ccd2c7cc2f025d8e4dde6c7c026f73fbf009bbc13f039d8e4bc4afcabf9ad6d0fe56f06cb889fe6167ef4f7b9854bf2b8bd6599ca20deed8dbe2a8343bfa754041c8f91f0cc20e36943c6731c194f27329eb3c8787691f1bc4bc6b39e8c670319cfab643c4bc978de22e3994fc67314194f1f329e93c978ce25e31940c65345c6f302194f2d19cf2c329e62329e22329e33c878de23e3d94dc6f31519cf46329e4d643caf93f12c23e3594ec6b3908ca70519cf89643cbdc9784ac8788692f1bc44c633878ce718329ed3c878f690f1bc4fc67301194f7b329ecd643c5bc878de24e35941c6b3928c6731194f73329ee3c9782e21e35942c6733619cf10329e57c878e691f1b422e339858ce703329ebd643ce791f16c25e3d946c6b38a8ce76d329ee7c978c693f1cc24e3694dc6732c19cf99643c1791f10c26e3b9988ce735329e51643c0bc8785a92f17424e3a920e339898ca72d194f2919cf76329e77c8785693f1ac21e3994dc6f322194f828ca70319cf27643ca793f15c4ac6732119cf20329e83643c6f90f1d490f12c22e32924e339818c673f19cf39643c3bc8787692f1ac25e35947c6f347329e97c978e692f11c4dc6731719cfa9643ce793f10c24e3a926e3798e8ca71919cf040bcf12473cd27745d62df34b9ab8ef3d86ef3d79e2fb3dc3f77b79e27b97e17b579ef8de61f8de9127beb71bbeb7e789efad86efad79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e65f85e9527be5718be57e489ef6586ef6579e27ba9e17b699ef866befe56df79926f41ecd5bf09f83f8e1fb7df11e3128351e6f703a3d870fcf7de8e78a2aedd7b13f8565a48df4579873e01ffaf00465731d5db6094795b4ce178a3158e78a2ee395410f8565ac8b71ce59b5809f83f8e9fe22aa62a0c4699b7c5148effd5c7114fd4bd923e04be9516f22d47f9067002fe8fe313b98aa93e06a3ccdb620ac79b18e08827ea1ecf0002df4a0b791623cfcc13f0ff81c0e82aa606188c326f8ba91dc033d0114fd4bda98104be9516d2f74cfa2c27e0ff8380d1554c0d341865de1653db816790239ea87b6a83087c2b2de4dd2879873501ff1f0c8cae626a90c128f3b698da0a3c831df144dd0b1c4ce05b693144e7e51b3909f8ff1060741553830d4699b7c5d466e019e28827ea1ee61002df4a8ba13a2fdfe04cc0ff8702a3ab981a6230cabc2da6703cdfa18e78a2eebd0e25f0adb4a8d2f90dfa3701ffaf0246573135d46094795b4ce1786d558e78a2ee195711f8565a48df18e9339880ff5703e350478c5506a3cc0f0546b1ad059e6a473c51f7baab097c2b2da4affb1afd9b80ffd700a3ab98aa361865de1653ab81a7c6114fd43dfa1a02df4a8b513a2fdff048c0ff4701a3ab98aa311865de1653ab806794239ea8670ba3087c2b2d64ec03f9265f02fe8fe365bb8aa95106a3ccdb626a05f0d43ae25966f02cb36871a47c2b2de4db2fcbf56f02fe3f1e185dc554adc128f3b6985a063ce31df1443dcb194fe05b69217d3bdfd2bf09f8ff0460741553e30d4699b7c5148ebf3cc1114fd433a80959f01df53c251bbea39e0d64c377d47dee6cf88eba679b0ddf51f71fb3e13bea5e5a367c47dd17ca86efa87b1cd9f01d75bd9e0ddf51d79ed9f01d751d950ddf51d704d9f01d757e9b0ddf51e76ad9f01d75dee1db73df9ec7edfb489e3be46b7b7e248fa147f258e2af0dfcb541b67cfb6389bf36c896ef7cbd36f0ed79f6db73b9fe2a08a2afc75639f2bdc2f02df3f89c658523dfcb0cdf328fcf0c9639f2bdd4f02df378ff7ba923dfc5866f995f9a05dfad0ddfadb3e8bb8de1bb8dc5b783ed5d9608ea5f7f0b034e9590c71878cb81168eea59aad6bb5cafebeb18d76bbb6f63ee2fc5506639e8e7baed90759b6d472e32635c14c4e7bb34013e649c3b6593e7c76f804ddafdd7c126fd025e039b1c9b5e059b3c937a056cf2ccea65b08dd2f94fc026cf8eb1cfbe3cffdf05b62a9dc7bee243757e07d8a42f15f65196fe70dbc1267d1ab16facf44bdd0a36e95b8c7d32a57ff866b0491f7fec0b28ef696c049bbc6b837dd0f6ebfc7ab0c97735b1efd3173abf166c5feafc1ab03daef3abc1f688cedf05b63fe8fc57607b58e79782edf73aff16d8a6ebfc72b0fd4ee75f02db6f75fe45b04dd3f917c0f690cee3bb6cbfd1f90fc03655e7f11daa5febfc1eb03da8f3f8eeceaf74fe3db0fd52e79f07db149d7f0e6c93757e31d87ea1f38bc03649e71782ede73abf006c13757e3ed87ea6f3f3c0f6539d9f0bb6713a3f076c3fd1f9d9601babf3b3c03646e76782edc73a3f036cf7ebfc1fc1f6239d5f06b6663abf026c322622f65391ef7cae029b8cf58dfd8f64fc8309603b4ae7c783ad95ced7824dbe0d370a6c32be700dd8123a5f0db6229daf029b9c9f0d059b8c0f33046c722e35186cc7e9fc20b0c979cf40b0c9788d03c026df20ed03361987bc026c32f6406fb09dacf34bc02663b2ed079b7c27ee20d864ece32fc026df87fe126c67e8fce36093716a1e01db593aff07b09dadf30f834dbe29fa7bb095e8fc74b0b5d5f9df81ed5c9dff2dd8644cb3696093efd03d0436193bf8376093ef3d4f055b3b9dff35d82ed2f907c12663bffc0a6c32fee52fc1d65ee7a7804dbe7b3d196c1d74fe176093f1382681ad93ceff1c6c32eec244b075d6f99f81ad4ce77f0ab62e3a3f0e6ce53aff13b075d5f9b160eba6f363c0d65de77f0cb61e3a7f3fd87aeabcb4336a7f56fbf9013d5f19c4775ea6fc7d14d49fd25d1b0803f2c479ae5d0c3ce86b5fec752f4b9ed74b5bd04caf5762681ff8de1bbbefd435c5877a5d857abd7b0ddf8550a654370e6a3939e637d7cbed3796c3fb58b26e59a613d83f30d6dd5ad7f74347f5dd6b300937ea2065ca35933a36fe42e71dbdc39fbc3e96580b40439c2a212f0c6eb42a2bc573e186f07c083cfb62e7495dafbb8809dcb7e2be5e37efe39ab1560c65f6827e1f38d00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ae780cee3b36629778084516cfb80c7c57d7e7c0e2beb57cf753e3ea7ceefbed8fdd67fbed742afb7d4a873219469595257f65b9a0dc71e95ed16b52d1d3c274cbb2dc55f11d4079f051d70c4b3cfe0d967d142f225b1f92e1bee46e3b252d597453d63df6fe87ac0a2a9abfd759f5e5781a129eeaf1f193cf86cb408783fd6bf0958cfc7500707fb78dab8107fb82fed039be43f024617db198f25d21ec8f3707c362d65be309e8bc7bfedcb4a5db61bef439d2a8343e3bb10cafc199eb7ff55e7b16fc801d0ed7f5bfe2f53bae7d4a29faaf3eef8eb9cdcbeef016725f841dfef026b4cbeebbd4353a093f8117b21e4ff17f4e79072a287682dec6a1f913e9dc86e2ef791b15c3194d963a97f65106ffd771b3cbb0d66b54dfe0171f6bfe1f8efaa4dda13a15127d048caec038df63be2d967f00887f8536564fbb734cac8b28550e6bfa18d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf81870721defbed87973abff57eb92d42fb6eb71f5ff9275b7d6cb0a4760acbf14d62f5c2d83e8638b9439a1a46efd2efb97ed37ea2c2ca8b39439a524f5abe2ec269dcfe45cff485db7459debef71c09308ea5f7bab29ddf11d8f31ef3be07154cf52dbb1eb03a34ec550a61dd4d3c1794cda778177836f17db1cb59073a8bd86168550e6e292d4afb41d513ae2b5ea8759a94b99f57cb0d4521729d3a9a4ae2eadc01e2793cbedf62ed449ad779fa5ae52a6bca44e976e3a9f80ed84f74daeb4fc5fa674ed018ec5b333fe3a27b7ef0ee0ac043fe8fb1d608dc977bd6f81c8f9bef8117b21e4af28a92b2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3cb52ffca20defaef3478761acc6a9bf42ca9cb4b1cb96c37774568540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452e6f692d4af6a671396b2e6bd6117f731f1ddd200ea111875950963c0c1b561395e3b493b257e3a827d9fce8bce1d0ded0aa1ccbd25a95f87e7ddd67b97e6f51d5e5308b7b96fe1bb1f552575dc2aee653bedd3bf4560fb54ff3aba4e2bb7dd33140edb3dc3512575ecb8ac707d62a98b798ddc2c38f49efad74659bcef966e39f4a5a683c6324adf4f2d4cfb0c3fad60d9d8ded5e85c5a1ac57f10f83e32986dbaca7e8031b74fe7cd7d05af8da5ccd492d4afb4496659b5edffebc43a7d643b8a76d89e604c7e048c953a5ffacda6e43e77d0a8bfcc8b3fc528f77b0e024ffc6d57ea7da54cee03ef071e176dbba336ba148fb1ad625b6fcf2adbf1ff2343ab2c3eafb51ef3cd67eead8c7c3cbecbaa6df79f6c5aecb5f0b87a8e12a5c55e8beff8b4e836dcd6ced9b4c866df87282d3eb0f88e518b1abcef994e8bf72d3c2eee45a5d3e27d8beff8b4e85e9aeeb9066ab1c7c2e3eade439416e22f53e60f08985b19f9787c9757d9ee93d9b4d86de17175dd1ca5c56e8beff8b4e8dc0defd1a5d3e23d0b4ffcf7e7d26bf19ec5777c5af4e889f7f0d269f1ae85c7d533dd282ddeb5f88e312e46d8eee5d8b4d865e1d995652d76597cc7787ed8cd76afcda6c54e0b8f83fbae69b5d869f11da316c3f0be6b3a2d7658787664598b1d16dff16951d5d5764fd8a6c53b161e57f784a3b478c7e23b3e2d86f550beb737408bed169eed59d662bbc5778cd750c9b8d8d6002db65978b665598b6d16dff169519d3cd7dada002db65a78b666598bad16dff169519a3ca66e6980165b2c3c5bb2acc5168bef18e322793db9b9015a6cb6f06cceb2169b2dbe633c8e24e3625303b4d864e1d994652d36597cc7a7454df2fed3c60668b1d1c2b331cb5a6cb4f88ef19e4b322e3634408b0d169e0d59d66283c5777c5a74491e53d737408bf5169ef559d662bdc5777c5a8c483e135bd7002dd65978d665598b7516df319e7726db8bb50dd062ad85676d96b5586bf11de37967f2fec59a0668b1c6c2b326cb5aacb1f88eb1ed4c9e77ae6e8016ab2d3cabb3acc56a8bef18cf3b935abcdd002ddeb6f0bc9d652ddeb6f88ef1bc33791c59d5002d5659785c8d8112a5c52a8bef18e322d976ae6c80162b2d3c2bb3acc54a8bef18ef6b25dbce150dd0628585c7d5780d515aacb0f88ef17a24798f6f7903b4586ee1599e652d965b7cc7f8ac28790ebeac015a2cb3f02ccbb216cbc0f7fed87da7fa738b0fe98bd5c1d0a210ca5cd836f52b7db1a274947560bf32accb5bb1d725d5af6c69445dde82ba48994ba12ead02276314953baa6b326696409dd47a3fb6d455ca746e5ba74b179d4fc036f90474bbccf27f990a8cf94ac88b7eaace6fc45fe764acbe0e9c95e0077dbf06ac31f9ee8cbe0b74123f622f847cffb67565a59ce8215a0bbbda47ded4796437975b662c570c65deb4d4bf3288b7fe6f183c6f18ccc9f71e20ce248edcb45d29a6372334ea001a4919ecb3f7b1231eb30fa170883f5546b67f4ba38c2c5b0865ae83360afb954a3d13c1a1fd261db5659d915dd62df3e2af186cfb81d1aca38a8f2fa1efa78c1521e348289b8c0bd105d6d3ddb0a9baf6705457f125eb96f91ec028e35474cf3e63594319bb198c8aa79703cd70ec0d99d21d2f7a014f4f073c8eea993c0ef536ead4c3a8533194c1771b7b3ba86701f89575cb7c6ff0ed629ba316724cbed8d0a210ca8c32ce1fa3749475a8f8ed6ea94b5fc77591754bbbd4370bbe2b0cdf5d0ddf89a0fe760e82f4fb570530f771c0acd6db2ffef596e2799bc494f8e90a75ea0f1ac455275c979ce7f537b42d84fca3709e27e5a4ac1cbf845dc5b26c4b643797eb652c570c65fa5aea5f19c45bff7e064f3f83596d9389706ee7607f48c6405f8343e6bb8276fd22b4eb0bda49193cfe7577a45d1f83a78fe15bf1c8394e6fb0c9b982f027e0ff5db2c06db67bbd2ddc62c371e26ce73adde2674c7baed30d18c5d607782a1c69666eeb8b0d7df0b8dcd22823cb164299e7e0d898b09455fb5dbb82ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6382bab11a274dae9d386ce488db46a41e3d0a5aa18189bf05966a34031be69b5b6c41507f48ca42b0c990942dc0d6cc900587c294f232a49d0bb9500f5977a1c1d90a58e2f48dc379ca942e748e021e17a1ac424786f4d4a173d7c4d19347607cb430381b133bea7fcdd3948b5a97abed60ee1395306fc660a123ffcda1be95302ffed4b629d6f9f1c3863fd07fe2c82963478c9b3c098532776ccc1704f53780f91b25b8ab9d0e03002b8c8d430ba35ed860c8ff64c31c133f67398e996b6a13803f998e01dd8e76a09b5abf8c7d3b7cd89831b74ca91a337af85553c60d9f3cba761c6ecd568672515b5afedf126cb6261ecbaa099b2d5cf6288bcd36e128c3adc02647aea3c1263cc780ad39e4a5bcb9659c846b3b58bfec52ea7f4a9c16bae247057521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e3d480d1dac860a3e2b480d05acbe765112a486f63d37480ddd7b7e901a9af742e0fb36305f14a44ebbd4d0baed83d4d0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a49fd6ba7f982e0bd3e561ba224c5786e9aa305d1da66bc2746d98ae0bd3f561ba214c3786e9a630dd1ca65bc2746b986e0bd3ed61ba23480def7c67901a7e5d0dff7c77901a1afa9e20356cf4bd416a48e9fb82d470d3c382d450d4c383d430d52382d410d62383d4f0d6a383d4d0b90f04a9a176c706a9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f2f420350cb31ab2f9d1303d16a486747e224c4f86e9a9303d1da667c2f46c901a1e5c0d1b3e2b480d33ae861f9f1ba4862b9f1fa4863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f394caf84e9d520f548423d8a518f28d4ed7ff5184cdda27e2b48dd3a5f1ea41e71ab47feaa0b84ea12a2bac8ac09525da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aaf705a9dbe20782d4a352753b5c3d1a50b7ccd5edfbcfc2f4ad201593df09d377c3f4bd307d3f4c3f08d30f83d410c66ab863355cb21a5a590db9ac8667564339aba1a0d510d1bf0e52434faba1ab7f17a486bffe43983e0f5243707f19a4865fff5398be0ad39fc3f49730fd354c7f0bd3dfc3f48f30fd4b98fe354cff16a67f0fd33f83ba61b6b121395db73efa0a26183679f288b1e327974cae2d193b65cce4d1e3c74c2b993a7af2a892da07474cac19533b1517feb65e58c608ef3f71e2b06925a3c7558f78a8a476cae492da9a92aada29e3aaeb1dc4ffaa173af3508fc3aaaba39dfdc73721fdbf8d747ab46e1765f4f56bd3d7ada879230439be310b756bdeb80a4dd74730b9d4bd3d751e5c32694cede492d29271e1dff0c05b3b754475c712fcdfa450e449934b264d1e36717249cdc4dab1259d3be27a671cd3884a1424dcc07438bd71e274d2df596a54887d7e4e2314f8fa9cc6911e5bf20d488f2f699cd38b4a1a51c38e8d59e8b646120e2e899465d294aac913870d9f1cbdf0b06fb2f0c8c654f3c14656f382b68d70d6be310b5ddbb67184231be36c7106ce82ff0f4e77936acc5606009b2d6c6f00000028441f8b08000000000000ffed9d777c1cc775c7f7d0580e471024c15ea046b3828743071bd83b654ab27a214882222d92a048a859962559927befdd728be5de7bac543b8913278e1dcbbd57c945f927713ec9e7e34f66f6e6193f0c77cf38681ff816f7f6f379bcd987b97ddff9ed9bd9bd99bde39341106482e2566deca2e0dc8dfedee75ef34f6d6b4df058794ece4c4a38ab52c2599d12ce9a9470d6a684b32e259c9352c23939259c5312e4b46c55c1c82d69dea90cba26cd984d99a6f529d03497324da7a540d386201d63d4f4947036a68473464a3867a68473564a389b52c2393b259c7352c23937259cf352c2393f259c0b52c2b930259c8b52c2b938259c4b52c2d99c12ce0b52c279614a382f4a09e7c529e1bc2441ce95c0b9d4bd3ecdbd2e73afcbddeb0af74aef59e55e57bb36d6b8fd16636b2c9bb156ef6f05636dc6da8d75787feb34d665acdb588ffb5bb3fb5bafb1b5c6d6195b6f6c83b18d4e874dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d8d38d1d307699b1cb8d5d61ec19c6ae347695b1ab8d5de3b15c6bec3a63d71bbbc1d88dc66e3276d058bfb143c60e1b3b626cc0d85163371b3b66ecb8b1671abbc5d80963278d9d323668ecb4b15b8d9d3176d6d890b1db8cdd6eec0e63771abbcbd3ec59c6ee36f66c63f7789ccf3176afb1fb8cdd6fecb9c61e30f6a0b1878c3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b1d0b7584b7197bbbb1878dbdc3d83b8dbdcbd8bb8dbdc7d85f187bafb1478cbdcfd8fb8d7dc0d8078d7dc8d8878d7dc4d8478d7dccd8c78d7dc2d8278d7dcad8a78d7dc6d8678d7dced8e78d7dc1d85f1afba2b1478dfd95b1bf36f637c6fed6d8df19fb7b635f32f66563ff60ec1f8dfd93b1af18fb6763ff62ecab9ee6ff6aecdf8c7dcdd8bf3bdfd7ddeb375c5d9a17fb0f63df74e5c7dcebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef571f7fa847bfd8d7bfdad7bfd9d7bfdbd7b7dd2d8d54dc5f2e46078eb0b121aa3da8fe6ed9a0a89bf3418b9592daadddfe8b5d9f96bdc3ebd9276b56ebfd6f3d7b9fd3aef3893ddfe64cfdfe8f61b3dff4cb73fd3f337b9fd26cf3fc7edcff1fc17bbfd8bc19f0d60ced5f9adafdab932e0a37cad025fadf35583af8e0e07be49ce570b3e3abf75e09be27c93c037d5f926832feb7c53484b63f5ced71724952bf97e7bdc5cd2c775eb50d392e73d6c8fdbc0c43b3d79de017bdc46065e9b1f33dcb1a643decc74be46f0cd72be19e07343d09ffa9cf5cd76be59e09be37c4de09beb7cb3c137cff9e6806fbef3cd05df02e79b07be85ce371f7c8b9c6f01f8163bdf42f02d71be45e06b76bec5e0bbc0f99680ef42e76b061f3de37201f82e76be0bc17789f35d043e1a6b2f061fdd1b5ee27c769c989c81f7383f8d51e17b687c06df321a9bc1b79cc665f0ada031197c2b2136f956c1b842bed5ce476394fd5baf2bf70549f58942d827d6267d5c73647bdcf5c91f375cb7db100c6bdd0771d682561b5d39c167835a3176c619c5217f0d9477415daa477ad07586d8edf5649d2b6f2cf1be5eef7d39a8b32ea2fd7d41b2ed5feff1acf7986ba1fd3c39db56d09c1df55676ce5e0575fddca37b9e8998b37b818321673b356747bd959db30350d7cf3dbaef9d88397b2d7030e46c3f4fce16f29ab3c539b22088ce3dfaec331173f61870249fb31d9ab3a3dfcaced9fba1ae9f7bf4f97722e6ecedc0917cce76f5ebbdc1a8b7b273f6e550d7cf3d9a8b998839fb207030e4ec808eb3a3decaced9b7425d3ff7685e7022e6ecab8023f99ced61cad936cdd9a0b8de1904d1b94773d41331671f068ee473f6b0cecf8e7e2b3b673f0775fddca3f5928998b31f7665bbcef075b7ceb0107cdf70be45c09b7c6e1f6967caed82e676f139902088ce515abb9b88b9fda82bdb3c7e0c9e3d20dfb79cef02f07ddbf92e04df779cef226817431fe8d73e30eaadec3ef03da8ebe732ad234fc43ef035e060c8d9c39ab3a3decaced9c7a1ae9f7bf44cc344ccd91f020743ce0e68ce8e7a2b3b67ff0075fddc5be6ca133167e9b9527bbff06377bfb0027c3f71be95e0fba9f3ad02dfcf9c6f35f87eee7c2de0fb85f3ad01df2f9d2f0fbe5f395f2bf87eed7c05f03dee7c6de07bc2f9dac1f71be7eb00df6f9daf137cbf73be2ef0fddef9bac1f7a4f3f5389f5defa267afbee27cf6dc92467d41b2e7969eb1a463d3feaa7188dde0c56e18c7d88d5eecc688d8ab19626721066d196fbf0fcaab7979f2b960e4f73f28d69ae463b5d9b6b704a36ffb1ae0c933b43d0b3146c393079ed6e479c2677d0bc91f373cc72d9ea65988d502ed6a6368570662d1b1699fe2e5c087e3775b04637bf28c850cc4a263d37e3b30920faf27745da7fe63af874b33c3bc0c7d29bc27a278f4db5fc4b106fc54e7bf670db3ad706cf5f077bcb6b67a3ea6bc0cf38262d1b1699fe2d5437b5ac79fb1305ac6bcc7c835466420161ddb8f8dfd7df5f86b36aaf39a03df7918930a631d93ea816d3cee53e2ceb594d81cd7ab0cc4a0b18d342f809feacc765f48b063db0e187719fa5fa1dcfb371c0f92cfe3421efbf56878da8087a3ef33f5d73c5ef7ff18249b6b1d9e56ad9e5639a8d30efa7530e857ea3e84e229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c667cfe02d737a9de2a218ce42b000fc73c7ff8fb51ee58747cbbaef36d58d7497edda290c7354b7ac670b9d7e61aa8f34466b8eef7613ddd5f1bc435cd55bcda8dea398bfae0dcb558ce35c4b875e0a8f5cbe6c462170e73adb7d9df50b1bf43d6e2e9ba2a425386e75446689af134c5e714577a3c364fe7550fb371acfd95bb16895a5139c9b53d7cc680f7bc14c70fca85aa60e4f881d799cec4638f5cc3a4f5f24e2f760dd4f99fccf0b9a16751e9ff39f49f79b275babc63d37b9683bfcb3b76837b2f71d47ac76f81f7529dff8331f56d55c19f34e378fe03c7e500da8a5b1f9471dd3cf9eb70711dbfad0c9e0ee0e1186798ee37f2d807925ec7eff2b48aba8fa13a9da05f17837e51f7a2b44ff194599995599995599995599995599995599995599995599995599995599995593e337e579458b350af2084719c9e7d08d733e8f75fe8f8765de72555c371b9d7e168cd6985d7e61aa8f3d5aae1baaf70e5fae0dce71de2ce25c37a5ec97349f1eaa13db816c4f57dee768fa73d420b2a372716bbb88e9fbcc6c3ebf86d9eae85084db9fa2baeb1a2a6d85f5b3d1e5c1bad0fce7db6240bc7198f6787e2f282e2615f6a071f95f1fbd11ce719af25fe733d140fd7af1f71da36045ce7be90e71c37baa14d7dc1b9f95d03753e0463df475c199fe1c067471e8df83b6da5d6a9493f96dfb2cb17d77dd702671fc4c1d8eb8035a1d8ad183be38ce290bf06ca5fac1aae4bf5480fd29ad86d1fa1df044376ff7daddefb7250a727a2fd7d41b2edeff5787a3d667b4e3e0e79f6285cffb9c6a49e188d9683465407ef83b89ec9f3c748fff9467c6eafceab83f72c54e7cb3046c53d3f1af5cc21d7752cee99c3a87be30e60f4dbe83fe759e9cf693d06e345d2cf693d063984cf6905def157c0f189ab2e88bfb6509def7ac7f7efc9e93df81c18d5f9018c170dee99c5fae0dcfb6f7c666a3c3e5fc53d274df1f0be06fbf69f6bbb65ee86fa7d0932634e200bde27509d5f79e7ac2b867b4dc47b9f88792f69b5da95f1f38baf9fd5a107ded397880ec53edfebb585f2ba07da4275fed3bb074cfebea5780f987c5b47de93d038d01ed156aaf35fd0d7fe00f778749ef073475df5b97fa7add43d20e967db3cdebf0f8cb125fc3e706df5705dff777e49eb727f1fb8d37b9fc4df07fe5fc8b33a780e9d6bac5e17a3d10ad088eae07783e83a82bfe51b35d771be3e4fe78273e709f03ac973df147dfdf3e7d5a2ee1156781ae33dc22cc7dce074f6ebfaf38574bd4cf2b961fcae440bc4c5ef4ab430e99907ddfa601fef0bce67ec3c53ecb8df9cce8f43ecb8df9c1e8fd88d5eecc6718cad9aabe6923467f84de4f0fb67f89ba5762b755f4a0c39785f550a18ab53c0589302c6da1430d6a58071520a1827a780714a0a18a7a680310b8ce7f3dacea04f61acfa709daf52f71a187b359316e5fcff1dccff974ac97b1f8ccdf0992ed46275307a2df0731ec76f3f94fb7fbd1003fedf053352c03833058cb352c0d89402c6d929609c9302c6b929609c9702c6f929605c9002c68529605c9402c6c529605c9202c6e614305e9002c60b53c078510a182f4e01e32529605caa8c8930aee4652c8c95d1f270fc9f7f4fe5ff1c63e0c9473d73caf4dd93b2ffbf35e6df276d1debefc6e1b325bcff27dc53fb6d3b8e6747cafd6dbb52ffdf2a136361ac8c5ccf02e17347a3e1897a3ea89597b1305646aeefbfe077f446c3d3099a754468c6c058182b23d7b372e53ecb89cff4774668c6c058182b233e579d204fa85957193cdda0595784660c8c85b132723d979c8518a3e1e901cdba233463602c8c9591e9bb6da1663d65f0e077c07a223463602c8c95d1f2ac65d2acb70c9eb5a0596f846692189127e9dfc9ee8d88c5f19dc172db4e0cc83825058c5353c088cf49708c5fa59e93e8e5d5a730567db8ce57a9e7243036c3f763422df0fb107f4e8bf5bc3c259f93c0d81b98b4c0efabfc392d36000fc7f767b21063343cc49083f7cd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1b32ac3bd62c9cf2f1b2678ecb8cf2a133d76dce792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d73fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e233886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430edeb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6610c57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1fb5a53c0d89702c68dbc8c85b1325a9eedc9f3849a6d2b83673b6846ef6be5652c8c95d1f2ec489e27d46c7b193c3b40b3ed119a313016c6ca68797626cf136ab6a30c9e9da0d98e08cd18180b6365b43cbb92e70935db5906cf2ed06c6784660c8c85b1325a9eddc9f3849aed2a83673768b62b423306c6c258192dcf9ee47942cd7697c1b30734db1da119036361ac8c96676ff23ca1667bcae0d90b9aed89d08c81b1305646cbb32f799e50b3bd65f0ec03cdf646682695716d0a1837a6809159c7c258192dcf7e269e7d65f0ec079e4b9978f697c17329f03c3d799e30a72e2d83871872f0beb52960dc980246d5517594c4a83a568e8ecaa88cca581e635f0a18f55c2ba3544686cf5725bf8b74e9048fdde0c56ea890d871df459ae8b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cd7349b10f241fbb50ee6fcc1c001e8edfbc616a67de1ef73277ac3f26a89fd5ea724fab4b3dad7250e732d0ef7206fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85730b53d6eacbf6282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3f7edf4fba7f618cf70e51ab78face4a73a574f2abe3604da8738626b1fd26b4525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826797309eedc278ba85f17408e32908e3592c8c67ae309e19c2783609e399228c67b9309e6a613c79613c4b84f1ac10c6334f18cf783cdf5c0ecf4c613c9b85f14c15c653238c678d309eddc2787a85f1ec10c6d3238c67ab309e4e613c4b85f1b409e36911c6335f18cf2c613c2b85f16485f1d40ae3592d8c67af309e75c2789609e359208ca749184fbd309e9c309e3a613cfb84f1ec11c6b35e18cf4e613cdb84f17409e3d9228ca75d18cf2a613c0b85f1cc16c6334d184f83309e49c278f60be359248c678e309ee9c2781a85f16c10c63359184f46004f3638f737c9b2f0f703e0abf2de6bc7cf9ea6e1bf5fe9fc55f09eab5cb93ae2d857828fbe1b7e55c47b51a72ba12d7dae9c7f6a5ba813c6ea837d8a570f1c5709e1992c8c6783309e46613cd385f1cc11c6b34818cf7e613c9384f13408e399268c67b6309e85c2785609e36917c6b345184f97309e6dc278760ae3592f8c678f309e7dc278ea84f1e484f1d40be36912c6b34018cf32613ceb84f1ec15c6b35a184fad309eac309e95c2786609e3992f8ca745184f9b309ea5c2783a85f16c15c6d3238c6787309e5e613cbb85f1ac11c653238c67aa309ecdc278660ae339208c679e309e15c2789608e3c90be3a916c6b35c18cf14613c9b84f1cc10c6335718cf62613c05613c1dc278ba85f16c17c6b34b184f55040fc3ff7f19f2d0f36b746cda3f202436c37908ffdfcfab99da748d3b56ad3b2ef153bc1aa873c85d88edf328f85ee2f29f37c47bf56b40a36b98da42e723e39d1fe6d8057cae320086c0d32788e0e1781e95a99d23f230c1ff7f366fb5bad6d3ca3f7739a87335e8772d837e51b94dfb142f8dcc96879e1d25d62cd4db2084917c57f0f284fd764330722bd56faf051e8e318ca99d61ffbace6bd38608dda90ee6ea750ced8cea3bb47f1d9c87b4315b1efa6c48ac59a8b7490823f9aee1e509fbd7a660e456aa7f5d073c1ce30f533bc3fe75bdd7a64d11ba531dccd5eb19da19d57768ff7a380f6963b63c34374eac59a8b7590823f9aee5e569cf429b692bd5bfae071e8ef187a99d61ffbac16bd3e608dda90ee6ea0d0ced8cea3bb47f039c076556e62866cb43cf9c136b16ea6d11c248beeb5879daf35968336da5c6b11b8087639c67d23d1cc76ef4dab4254277aa83b97a23433ba3fa0eeddf1811bb3948568b9b46a1c54d113c378db31614af5ce6ab53c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc72c4167cb43bfd947ac59a8b7550823f9aee7e509bf17b43518b965bcfd3e28df043c3730e8c3d4cef019f2835e9bb646e84e75b07f1d64686754dfa1fd83701e0e96c17c630a9955e7b1315b1efabf1688350bf5b6096124df0dbc3ce138b62d18b9951ac70e020fc738cfd4ce701cebf7dab42d4277aa83fdab9fa19d517d87f6299e322b731cb3e5a1dfcc22d62cd4db2e84917c37b1f214c2ef376e0f466ea5c6b17ee03998384f711c63d03d1cc70e796dda1ea13bd5c15c3dc4d0cea8be43fb87e03c94c37c630a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d2d0ffddf84c49a857a3b843092ef202b4f5bb8eeb02318b965bcfd3e281f029efec4798aeb0e0cba87eb0e87bd36ed88d09dea60ff3accd0cea8be43fb87e13c4c74e61b53c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f2ec746562cd42bd9d4218c9d7cfcb13feeec1ce60e456eab99dc3c07388411fa67686cfed1cf1dab4334277aa83fdeb08433ba3fa0eed1f81f3a0ccca1cc56c7976b932b166a1de2e218ce43bc4cb138e63bb82915ba971ec08f0708cf34ced0cc7b101af4dbb2274a73a98ab030ced8cea3bb43f00e7419995398ad9f2ec766562cd42bddd4218c9779897271cc7760723b752e3d800f0708cf34ced0cc7b1a35e9b7647e84e7530578f32b433aaefd0fe51380fcaaccc51cc96678f2b136b16eaed11c248be23bc3c852cb499b652e3d851e0e118e799da198e63377b6dda13a13bd5c15cbd99a19d517d87f66f86f3903666cbb3d79589350bf5f60a6124df002f4fd8bff60623b752fdeb66e0e1187f98da19f6af635e9bf646e84e7530578f31b433aaefd0fe31380f6963b63cfb5c9958b3506f9f1046f21de5e509fbd7be60e456aa7f1d031e8ef187a99d61ff3aeeb5695f84ee540773f538433ba3fa0eed1f87f3903666cbb3df9589350bf5f60b61241f5e2ff633f1e43c9e5c84161331768317bba14262377ab11b2b24b6e6b9e67925c4d63cd73caf84d89ae79ae79510bb52734d35af4ccd33e751f3cc79d43ca39a8bd4fc8fc9c5eec071a50a621d636a276e7d50c6f939daba85f17408e32908e3592c8c67ae309e19c278a608e3592e8ca75a184f5e18cf12613c2b84f1cc13c6335318cf54613c35c278d608e3e915c6d3238ca75318cf52613c6dc2785a84f1cc17c6334b18cf4a613c59613cb5c278560be359278c6799309e05c2789a84f1d40be3c909e3a913c6b35e184f97309e76613cab84f12c14c6335b18cf34613c0dc2782609e359248ce780309e39c278a60be36914c63359184f46004f3638f7fb28f87d826af0d1f3fdfbc1f74c573e00beaa8818749ce3e0a3f9533a861dffb6369dcb5005efb92582eb9911f128ce2d11ef1d0fdd31561fec53bc7ae0b84508cf64613c8dc278a60be399238ce780309e45c2782609e36910c6334d18cf6c613c0b85f1ac12c6d32e8ca74b18cf7a613c75c27872c278ea85f13409e359208c6799309e75c278560be3a915c69315c6b35218cf2c613cf385f1b408e36913c6b354184fa7309e1e613cbdc278d608e3a911c6335518cf4c613cf384f1ac10c6b344184f5e184fb5309ee5c278a608e399218c67ae309ec5c2780ac2783a84f1740be3a98ae039c0c413f77b0a0704c4b6fb79d0c56e59f8fb787c0ff080c748fbc78011798927cfc413f71b147901b16dfbe9b304ad7965e1eff83d2eae9cca7b8cb41f9553f89cdc1a269eb8dfed582320b6d582e62ee919802cfc1dbfb7c095536b3c46da8fcaa9465e9ef0ff96581d8cdc4a3d6b847d8ee31c32b5338ffd2fc1dfd088fc2dead59e56f81baae3f1dc63dc7840f1945999e3982d0fcd3d132b5ecfc6e37b93a3618cbabe32f084e3634b30722b353e1e031e8eeb07533bc371ec84d7a69608dda90ee6ea09867646f51dda3f1111bb3948568b93a3d0e26404cfc971d682e295cb7c2085cc1274b63cab5c9958b3506f951046f2e57979c2f1715530722b353e9e041e8eeb07533bc331e194d7a65511ba531dec5fa718da19d57768ff149c8772984fa49059751e1bb3e5a1395262cd42bd821046f21d63e529e4b3d066da4a8d63a78087639c67d23d1cc706bd36152274a73ad8bf0619da19d577687f10ce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b63cf45d4262cd42bd36218ce43bc9ca535c77680b466ea5d61d068187635d8649f770dde1b4d7a6b608dda90ee6ea69867646f51dda3f0de7419995599995599995599995599995599995599995599995599995599995599965335b1efa4d6962cd42bd76218ce43bc5cb137e6fab3d18b9955a77380d3c1ceb324ced0cd71d6ef5dad41ea13bd5c15cbd95a19d517d87f66f85f3a0ccca1cc56c79e8b7a488350bf53a8430926f9095a7b87eda118cdc4a8d63b7020fc738cfa47b388e9df1dad411a13bd5c15c3dc3d0cea8be43fb67e03c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece9687fe8f3362cd42bd4e218ce43bcdcad316ae3b740623b752eb0e678087635d8649f770dde1acd7a6ce08dda90ef6afb30ced8cea3bb47f16cec344673e914266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b96a7cb9589350bf5ba843092ef565e9ef0770fba82915ba9e776ce02cf19067d98da193eb733e4b5a92b4277aa83fd6b88a19d517d87f687e03c28b33247315b9e6e5726d62cd4eb16c248be33bc3c852cb499b652e3d810f0708cf34ced0cc7b1dbbc367547e84e7530576f63686754dfa1fddbe03ca48dd9f2f4b832b166a15e8f1046f2e175b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701f15cef7528c001870eb83327e56e0b8f7646a673eeaf3d87aaf4df8790ce71cced7e70d6556e63866a6798bf6ac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986decdb938fdd9ef562933e81c743dbedcc5a30b5331c0fee08a235a67839a883797a07433b3310978e4dfb77c0792887f9440a9955e7b131dbd877261ebbf87bf2189bf4093c1edaee64d682a79dc5f1e0ae205a638a97833a98a77731b4330371e9d8b47f179c076556666556666556666556666556666556666556666556666556666556666596cd6c633f2bf1d8c5f97b8c4dfa041e0f6dcf62d682a79dc5f9fbbb83688d295e0eeae039bf9ba19d19884bc7a6fdbbe13c28b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb36c661bfbd9c9c70ebf8f83b1499fc0e3a1edd9cc5a30b5339cbfbf2788d698e2e5a00e9ef37b18da9981b8746cdabf07ce83322b7314b38dfd9cc46317d7f33036e913783cb43d87590b9e7616c7837b83688d295e0eeae039bf97a19d19884bc7a6fd7be13c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece36f67d89c76e0be7ef3136e913783cb4ddc7ac054f3b8bf3f7f707d11a53bc1cd4c13cbd9fa19d19884bc7a67d8a5709cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3c67e6ef2b1c3efb3636cd227f078687b2eb3164ced0c9f7f792088d698e2e5a00ee6e9030cedcc405c3a36ed3f00e7419995398ad9c67e30f9d885ac179bf4093c1eda1e64d682a99de178f05010ad31c5cb411d3ce70f31b4330371e9d8b4ff109c87b431e3f9cb24173b7c6e936254b957eb7b9e2b5783eff9ae5c03be17b8722df85ee8ca75e07b912b4f02df8ba16de47b892baf04df4b5d793df85ee6caebc0f77257ee05df2b5cb9077caf74e521f0bdca956f03dfab5df976f0bdc695ef00df6b5df94ef0bdce95ef02dfeb5df959e07b832bdf0dbe37baf2b3c1f72657be077c6f76e5e780ef2dae7c2ff8deeacaf781ef6dae7c3ff8deeeca4bc1f77084ef1daefc5cf0bdd3951f00dfbb5cf900f8deedca53c0f71e579e0abebf8032bdbed795ebc1f7882be7c0f73e579e06bef7bb7203f83ee0cad3c1f741576e04df875c7906f83eecca33c1f711579e05be8fba7213f83ee6cab3c1f771579e03be4fb8f25cf07dd295e781ef53ae3c1f7c9f76e505e0fb8c2b2f04df675d7911f83ee7ca8bc1f779575e02be2fb8329edfbf74e507c147e3ca43e0a371e579e0a371e5f9e0a371e505e0a371e585e0a371e545e0a371e5c5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828efde083ecabb37818ff2eecde0a3bc7b0bf828efde0a3ecabbb7818ff2eeede0a3bc7b187c9477ef001fe5dd3bc1d7eccaef02df05aefc6ef05de8caef01df45ae8ce3ccc5aefc5ef05de2ca8f808fc6c2f781ef69aefc7ef02d73e50f806fb92b7f107c2b5cf943e05be9ca1f06df2a57fe08f856bbf247c1d7e2ca1f03df1a57fe38f8f2aefc09f0b5baf227c15770e54f81afcd953f0dbe7657fe0cf83a5cf9b3e0eb74e5cf81afcb953f0fbe6e57fe02f8e83a4ee38cedcfb65f920ea491f5519b5b22da42bec9d096be20d97b3a8a45c7a6fd3660a47350187fc6c268195b3d46cbd3c1a019e6156da53e3375004f3b030f533bc3cf4c9d5e9bdabc36e5a0ced3a09d9d0cedcc405c3a36ed77426c8e738e5ad4bae32ef3b4a8813a397741b3d7d3523ad2316cfe1622dad2c3dc163a368d4b3de310bbcb8b9df762e3784c5ba9fed505ccdd0cccf6b8bdc91f37ec5f6bddb128a7284e1edab40e3448aa4d183be38ce290bf06ca17360dd7a57aa4075dbf88dde6329d4b64f7dfd7e1bd2f07757a22dadf1724dbfe5e8fa7d763b6e7644ed33007437f0873a0c7e3a0fd3c68d71ba35d0f684775f0fa5760d2aedbe3e9f6625b1ebac7e9041fdd2b103fde67b58c03b73fee75467093af0b18a3ee755a93672c79afd30a8ce4eb069e2e26cdfc73bdccd307afcb755e1d7a6f0dd4e9826b6336a2aeed774b33c3eda2cfe07f0c921dd3eb18f4c2f98100f4093c0d03d08bda59cbc03335189e23383b3478a6ffe681cb06fa8f6400adc6c3c4d74c4433aac087e5ea089fdd702a04a764692a04a764e9bd38254bc7a5faf6a3946d164d370c9c3c3ef48c5303a70e9fb9ebf4d0c091bd833723351d1d7dd550ae8af1d744f8689b1c0c4fdaf405c92ec6d479b14a25cf64789d943c4f2b533bc38bde14af4d755e9b7250a716fe3685a19d19884bc7a6fd2911b1131c88422da68e428ba9113c53c7590b9cf8261ff654fa3b2e9e54796dc11e8d6df2f33cd10651c0a570fc8c83b37fb39dbdd6356652307cb269f4b477b4f624d819537bd5b233a27606d40e417686d3ce68da8b9a9db1b433947646d2ce40da19473bc3686714ed0ca29d31b43384cd417106d0cef8d9193e3ba37709b07d0578eda76a7b85b433727606ceceb8d93b2bfb89cdde8dd8bb6f7ba768ef0eec5d81fd64696719ecd5d6dec9d8abb4bdb2da3b457b8768efe8ed1dae5da5da606ca3d37a93b1cdc6b618db6a6c9bb1edc67618db696c97b1ddc6f618db6b6c9fb1fdc62e35f6f4a038bb7e99b1cb8d5d61ec19c6ae347695b1ab8d5d63ec5a63d719bbded80dc66e347693b183c6fa8d1d3276d8d8116303c68e1abbd9d83163c78d3dd3d82d41f1099d93c64e191b3476dad8adc6ce183b1b1457ccec0a995d11b32b6076c5cbae70d9152dbb826557acec0a955d91b22b50f705c51526bb52645786ecaa805d05b0b3fe7696ff05417116dfcedabf3828cecadb59783beb6e67d9edacba9d45b7b3e67696dcce8adb59703beb6d67b9edacb69dc5b6b3d67696dace4adb59683beb6c67991f0e8ab3c876d6d8ce12db59613b0b6c677ded2cef23417116d7cedada595a3b2b6b6761edacab9d65b5b3aa7616d5ce9ada59523b2b6a6741edaca79de5b4b39a7616d3ce5ada594a3b2bf945638f1afb2b637f6dec6f8cfdadb1bf33f6f7c6be64eccbc6fec1d83f1afba7a09897ff6cec5f8c7dd5d8bf1afb37635f33f6efc6be6eec1bc6fec3d8378d3d66ec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec71634f18fb8db1df1afb9db1df1b7b32185eddc041e40f6e8766dafb8786064e9e1e6a1e1a6c3e79db89a1e3a74fdcd57cc7f1a163cd83b70f9c397a62f00e7cf37bddb045cb089bce9ce9bfabf9f8a9230377360fde36d43c78b4f9d0e06da78e9cc5377dc9bd69e1b911fb8f1c890ff6cdaaa740fa9d3106fda57b1f2dd0ec2addb6c7c722c8936379d3cceab135e82a77d5a14fef9717ef769bcf9e181c6ace379f32fff69f30ef1938d2d28c7f3b6b443e3bd47c76a8ffcc50f3d13383279b5b5bf0b8fd53c6d088faa631bca9b369f42d0ffe1fb379eca96d0b0400", "privateFunctions": [ { "selector": { @@ -37,8 +37,8 @@ exports[`ContractClass creates a contract class from a contract compilation arti "isInternal": false } ], - "id": "0x13d35e4219fbca20acd2fe6e4d4077b2dfd7d61da6262e9fb0c4e60f2f7928e3", + "id": "0x13db790ab35617fe3d1616012e7faf656810c515cf51a6f49ac453e444a3dffc", "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x1340525ead90736bb961f723384e234d2a74e81e37f6e1a6959cc750fbb27ec3" + "publicBytecodeCommitment": "0x1669a01fc7a802e84a6a650d3b51274d51c270cb54b2c77d3ee6fe69e06b7221" }" `; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap index f0def72c5df..acbbf75a464 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap @@ -1,11 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -<<<<<<< HEAD -exports[`PrivateCallStackItem computes empty item hash 1`] = `Fr<0x2b90b5c6c4f91c1ae785b1c8b780a5cb59dbf9042c56dd793548d85f9bb2287e>`; +exports[`PrivateCallStackItem computes empty item hash 1`] = `Fr<0x008473ad34c80cbf824246b499feeeb64eee476ebcaaf585747f72a3383c09e9>`; -exports[`PrivateCallStackItem computes hash 1`] = `Fr<0x0163eb0bc633e3845a33e4c167ea5eda5b1b07d4392cfa4293200098bd2d6c81>`; -======= -exports[`PrivateCallStackItem computes empty item hash 1`] = `Fr<0x134b57e317f1554b9c4f547e617338fcc8ff04c6d96a278f1752b26a462c5d25>`; - -exports[`PrivateCallStackItem computes hash 1`] = `Fr<0x0827f66d5441052dd5a2ce06f346816f02173bd4ed0dc3eb9071e840de06a11d>`; ->>>>>>> master +exports[`PrivateCallStackItem computes hash 1`] = `Fr<0x20d0cc9015c9e4c8664fff3c5c0e050c5918b11eb3461ceb1d777903c78fa502>`; diff --git a/yarn-project/circuits.js/src/structs/index.ts b/yarn-project/circuits.js/src/structs/index.ts index d0755d06278..c9a4c194fbc 100644 --- a/yarn-project/circuits.js/src/structs/index.ts +++ b/yarn-project/circuits.js/src/structs/index.ts @@ -55,6 +55,7 @@ export * from './rollup/merge_rollup.js'; export * from './rollup/previous_rollup_data.js'; export * from './rollup/root_rollup.js'; export * from './rollup/state_diff_hints.js'; +export * from './rollup_validation_requests.js'; export * from './shared.js'; export * from './side_effects.js'; export * from './state_reference.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts index cdbdf292d4a..2429a6f71cc 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts @@ -1,6 +1,7 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { AggregationObject } from '../aggregation_object.js'; +import { RollupValidationRequests } from '../rollup_validation_requests.js'; import { PrivateAccumulatedNonRevertibleData, PrivateAccumulatedRevertibleData } from './combined_accumulated_data.js'; import { CombinedConstantData } from './combined_constant_data.js'; @@ -13,6 +14,10 @@ export class PrivateKernelTailCircuitPublicInputs { * Aggregated proof of all the previous kernel iterations. */ public aggregationObject: AggregationObject, // Contains the aggregated proof of all previous kernel iterations + /** + * Validation requests for the rollup accumulated during private execution. + */ + public rollupValidationRequests: RollupValidationRequests, /** * Accumulated side effects that are not revertible. */ @@ -42,6 +47,7 @@ export class PrivateKernelTailCircuitPublicInputs { toBuffer() { return serializeToBuffer( this.aggregationObject, + this.rollupValidationRequests, this.endNonRevertibleData, this.end, this.constants, @@ -60,6 +66,7 @@ export class PrivateKernelTailCircuitPublicInputs { const reader = BufferReader.asReader(buffer); return new PrivateKernelTailCircuitPublicInputs( reader.readObject(AggregationObject), + reader.readObject(RollupValidationRequests), reader.readObject(PrivateAccumulatedNonRevertibleData), reader.readObject(PrivateAccumulatedRevertibleData), reader.readObject(CombinedConstantData), @@ -72,6 +79,7 @@ export class PrivateKernelTailCircuitPublicInputs { static empty() { return new PrivateKernelTailCircuitPublicInputs( AggregationObject.makeFake(), + RollupValidationRequests.empty(), PrivateAccumulatedNonRevertibleData.empty(), PrivateAccumulatedRevertibleData.empty(), CombinedConstantData.empty(), diff --git a/yarn-project/circuits.js/src/structs/kernel/public_kernel_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/public_kernel_circuit_public_inputs.ts index 2fff38caa9f..4f9fe651a23 100644 --- a/yarn-project/circuits.js/src/structs/kernel/public_kernel_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/public_kernel_circuit_public_inputs.ts @@ -3,6 +3,7 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { inspect } from 'util'; import { AggregationObject } from '../aggregation_object.js'; +import { RollupValidationRequests } from '../rollup_validation_requests.js'; import { ValidationRequests } from '../validation_requests.js'; import { CombinedAccumulatedData, @@ -23,6 +24,10 @@ export class PublicKernelCircuitPublicInputs { * Aggregated proof of all the previous kernel iterations. */ public aggregationObject: AggregationObject, // Contains the aggregated proof of all previous kernel iterations + /** + * Validation requests forwarded to the rollup accumulated from public functions. + */ + public rollupValidationRequests: RollupValidationRequests, /** * Validation requests accumulated from public functions. */ @@ -60,6 +65,7 @@ export class PublicKernelCircuitPublicInputs { toBuffer() { return serializeToBuffer( this.aggregationObject, + this.rollupValidationRequests, this.validationRequests, this.endNonRevertibleData, this.end, @@ -91,6 +97,7 @@ export class PublicKernelCircuitPublicInputs { const reader = BufferReader.asReader(buffer); return new PublicKernelCircuitPublicInputs( reader.readObject(AggregationObject), + reader.readObject(RollupValidationRequests), reader.readObject(ValidationRequests), reader.readObject(PublicAccumulatedNonRevertibleData), reader.readObject(PublicAccumulatedRevertibleData), @@ -105,6 +112,7 @@ export class PublicKernelCircuitPublicInputs { static empty() { return new PublicKernelCircuitPublicInputs( AggregationObject.makeFake(), + RollupValidationRequests.empty(), ValidationRequests.empty(), PublicAccumulatedNonRevertibleData.empty(), PublicAccumulatedRevertibleData.empty(), @@ -119,6 +127,7 @@ export class PublicKernelCircuitPublicInputs { [inspect.custom]() { return `PublicKernelCircuitPublicInputs { aggregationObject: ${this.aggregationObject}, + rollupValidationRequests: ${inspect(this.rollupValidationRequests)}, validationRequests: ${inspect(this.validationRequests)}, endNonRevertibleData: ${inspect(this.endNonRevertibleData)}, end: ${inspect(this.end)}, diff --git a/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts index 9d97ce38ed5..45371bbed7d 100644 --- a/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts @@ -1,6 +1,7 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { AggregationObject } from '../aggregation_object.js'; +import { RollupValidationRequests } from '../rollup_validation_requests.js'; import { CombinedAccumulatedData } from './combined_accumulated_data.js'; import { CombinedConstantData } from './combined_constant_data.js'; @@ -22,6 +23,10 @@ export class RollupKernelCircuitPublicInputs { * Data which is not modified by the circuits. */ public constants: CombinedConstantData, + /** + * Validation requests accumulated from private and public execution to be completed by the rollup. + */ + public rollupValidationRequests: RollupValidationRequests, ) {} toBuffer() { @@ -39,6 +44,7 @@ export class RollupKernelCircuitPublicInputs { reader.readObject(AggregationObject), reader.readObject(CombinedAccumulatedData), reader.readObject(CombinedConstantData), + reader.readObject(RollupValidationRequests), ); } @@ -47,6 +53,7 @@ export class RollupKernelCircuitPublicInputs { AggregationObject.makeFake(), CombinedAccumulatedData.empty(), CombinedConstantData.empty(), + RollupValidationRequests.empty(), ); } } diff --git a/yarn-project/circuits.js/src/structs/rollup_validation_requests.ts b/yarn-project/circuits.js/src/structs/rollup_validation_requests.ts new file mode 100644 index 00000000000..7da5e636478 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/rollup_validation_requests.ts @@ -0,0 +1,46 @@ +import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; + +import { MaxBlockNumber } from './max_block_number.js'; + +/** + * Validation requests directed at the rollup, accumulated during the execution of the transaction. + */ +export class RollupValidationRequests { + constructor( + /** + * The largest block number in which this transaction can be included. + */ + public maxBlockNumber: MaxBlockNumber, + ) {} + + toBuffer() { + return serializeToBuffer(this.maxBlockNumber); + } + + toString() { + return this.toBuffer().toString('hex'); + } + + /** + * Deserializes from a buffer or reader, corresponding to a write in cpp. + * @param buffer - Buffer or reader to read from. + * @returns Deserialized object. + */ + static fromBuffer(buffer: Buffer | BufferReader) { + const reader = BufferReader.asReader(buffer); + return new RollupValidationRequests(reader.readObject(MaxBlockNumber)); + } + + /** + * Deserializes from a string, corresponding to a write in cpp. + * @param str - String to read from. + * @returns Deserialized object. + */ + static fromString(str: string) { + return RollupValidationRequests.fromBuffer(Buffer.from(str, 'hex')); + } + + static empty() { + return new RollupValidationRequests(MaxBlockNumber.empty()); + } +} diff --git a/yarn-project/circuits.js/src/structs/validation_requests.ts b/yarn-project/circuits.js/src/structs/validation_requests.ts index 875c58b546a..fbcbe3d2b35 100644 --- a/yarn-project/circuits.js/src/structs/validation_requests.ts +++ b/yarn-project/circuits.js/src/structs/validation_requests.ts @@ -11,6 +11,7 @@ import { import { NullifierKeyValidationRequestContext } from './nullifier_key_validation_request.js'; import { PublicDataRead } from './public_data_read_request.js'; import { ReadRequestContext } from './read_request.js'; +import { RollupValidationRequests } from './rollup_validation_requests.js'; import { SideEffect } from './side_effects.js'; /** @@ -18,6 +19,11 @@ import { SideEffect } from './side_effects.js'; */ export class ValidationRequests { constructor( + /** + * Validation requests that cannot be fulfilled in the current context (private or public), and must be instead be + * forwarded to the rollup for it to take care of them. + */ + public forRollup: RollupValidationRequests, /** * All the read requests made in this transaction. */ @@ -48,6 +54,7 @@ export class ValidationRequests { toBuffer() { return serializeToBuffer( + this.forRollup, this.noteHashReadRequests, this.nullifierReadRequests, this.nullifierNonExistentReadRequests, @@ -68,6 +75,7 @@ export class ValidationRequests { static fromBuffer(buffer: Buffer | BufferReader) { const reader = BufferReader.asReader(buffer); return new ValidationRequests( + reader.readObject(RollupValidationRequests), reader.readArray(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, SideEffect), reader.readArray(MAX_NULLIFIER_READ_REQUESTS_PER_TX, ReadRequestContext), reader.readArray(MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, ReadRequestContext), @@ -87,6 +95,7 @@ export class ValidationRequests { static empty() { return new ValidationRequests( + RollupValidationRequests.empty(), makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, SideEffect.empty), makeTuple(MAX_NULLIFIER_READ_REQUESTS_PER_TX, ReadRequestContext.empty), makeTuple(MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, ReadRequestContext.empty), diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 9d74d9d31c7..5db4af4d641 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -134,6 +134,7 @@ import { PrivateKernelInitCircuitPrivateInputs } from '../structs/kernel/private import { PrivateKernelInnerCircuitPrivateInputs } from '../structs/kernel/private_kernel_inner_circuit_private_inputs.js'; import { RollupKernelCircuitPublicInputs } from '../structs/kernel/rollup_kernel_circuit_public_inputs.js'; import { RollupKernelData } from '../structs/kernel/rollup_kernel_data.js'; +import { RollupValidationRequests } from '../structs/rollup_validation_requests.js'; import { ValidationRequests } from '../structs/validation_requests.js'; /** @@ -266,6 +267,7 @@ export function makeContractStorageRead(seed = 1): ContractStorageRead { export function makeValidationRequests(seed = 1) { return new ValidationRequests( + makeRollupValidationRequests(seed), makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, sideEffectFromNumber, seed + 0x80), makeTuple(MAX_NULLIFIER_READ_REQUESTS_PER_TX, makeReadRequestContext, seed + 0x90), makeTuple(MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, makeReadRequestContext, seed + 0x95), @@ -274,6 +276,10 @@ export function makeValidationRequests(seed = 1) { ); } +export function makeRollupValidationRequests(seed = 1) { + return new RollupValidationRequests(new MaxBlockNumber(true, new Fr(seed + 0x31415))); +} + /** * Creates arbitrary accumulated data. * @param seed - The seed to use for generating the accumulated data. @@ -443,6 +449,7 @@ export function makePublicKernelCircuitPublicInputs( ): PublicKernelCircuitPublicInputs { return new PublicKernelCircuitPublicInputs( makeAggregationObject(seed), + makeRollupValidationRequests(seed), makeValidationRequests(seed), makeCombinedAccumulatedNonRevertibleData(seed, fullAccumulatedData), makeCombinedAccumulatedRevertibleData(seed, fullAccumulatedData), @@ -467,6 +474,7 @@ export function makeRollupKernelCircuitPublicInputs( makeAggregationObject(seed), makeCombinedAccumulatedData(seed, fullAccumulatedData), makeConstantData(seed + 0x100), + makeRollupValidationRequests(seed), ); } /** @@ -496,6 +504,7 @@ export function makePrivateKernelInnerCircuitPublicInputs( export function makePrivateKernelTailCircuitPublicInputs(seed = 1, full = true): PrivateKernelTailCircuitPublicInputs { return new PrivateKernelTailCircuitPublicInputs( makeAggregationObject(seed), + makeRollupValidationRequests(seed), makeAccumulatedNonRevertibleData(seed + 0x100, full), makeFinalAccumulatedData(seed + 0x200, full), makeConstantData(seed + 0x300), diff --git a/yarn-project/ethereum/src/constants.ts b/yarn-project/ethereum/src/constants.ts index 898c5699168..fa71f161b2a 100644 --- a/yarn-project/ethereum/src/constants.ts +++ b/yarn-project/ethereum/src/constants.ts @@ -1,4 +1,3 @@ import { Hex } from 'viem'; export const NULL_KEY: Hex = `0x${'0000000000000000000000000000000000000000000000000000000000000000'}`; -tat \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts index 8289a9fef4c..8a3805e064a 100644 --- a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts @@ -91,6 +91,7 @@ import { ReadRequestStatus, RollupKernelCircuitPublicInputs, RollupKernelData, + RollupValidationRequests, RootParityInput, RootParityInputs, RootRollupInputs, @@ -135,6 +136,7 @@ import { PublicDataUpdateRequest as PublicDataUpdateRequestNoir, ReadRequestContext as ReadRequestContextNoir, ReadRequest as ReadRequestNoir, + RollupValidationRequests as RollupValidationRequestsNoir, SideEffectLinkedToNoteHash as SideEffectLinkedToNoteHashNoir, SideEffect as SideEffectNoir, TxContext as TxContextNoir, @@ -359,29 +361,6 @@ export function mapTxContextFromNoir(txContext: TxContextNoir): TxContext { ); } -/** - * Maps a max block number to a noir max block number. - * @param maxBlockNumber - The max block number. - * @returns The noir max block number. - */ -export function mapMaxBlockNumberToNoir(maxBlockNumber: MaxBlockNumber): MaxBlockNumberNoir { - return { - _opt: { - _is_some: maxBlockNumber.isSome, - _value: mapFieldToNoir(maxBlockNumber.value), - }, - }; -} - -/** - * Maps a noir max block number to a max block number. - * @param maxBlockNumber - The noir max block number. - * @returns The max block number. - */ -export function mapMaxBlockNumberFromNoir(maxBlockNumber: MaxBlockNumberNoir): MaxBlockNumber { - return new MaxBlockNumber(maxBlockNumber._opt._is_some, mapFieldFromNoir(maxBlockNumber._opt._value)); -} - /** * Maps a function selector to a noir function selector. * @param functionSelector - The function selector. @@ -941,6 +920,7 @@ function mapNullifierNonExistentReadRequestHintsToNoir( function mapValidationRequestsToNoir(requests: ValidationRequests): ValidationRequestsNoir { return { + for_rollup: mapRollupValidationRequestsToNoir(requests.forRollup), note_hash_read_requests: mapTuple(requests.noteHashReadRequests, mapSideEffectToNoir), nullifier_read_requests: mapTuple(requests.nullifierReadRequests, mapReadRequestContextToNoir), nullifier_non_existent_read_requests: mapTuple( @@ -957,6 +937,7 @@ function mapValidationRequestsToNoir(requests: ValidationRequests): ValidationRe function mapValidationRequestsFromNoir(requests: ValidationRequestsNoir): ValidationRequests { return new ValidationRequests( + mapRollupValidationRequestsFromNoir(requests.for_rollup), mapTupleFromNoir(requests.note_hash_read_requests, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir( requests.nullifier_read_requests, @@ -977,6 +958,33 @@ function mapValidationRequestsFromNoir(requests: ValidationRequestsNoir): Valida ); } +export function mapRollupValidationRequestsToNoir( + rollupValidationRequests: RollupValidationRequests, +): RollupValidationRequestsNoir { + return { + max_block_number: mapMaxBlockNumberToNoir(rollupValidationRequests.maxBlockNumber), + }; +} + +export function mapRollupValidationRequestsFromNoir( + rollupValidationRequests: RollupValidationRequestsNoir, +): RollupValidationRequests { + return new RollupValidationRequests(mapMaxBlockNumberFromNoir(rollupValidationRequests.max_block_number)); +} + +export function mapMaxBlockNumberToNoir(maxBlockNumber: MaxBlockNumber): MaxBlockNumberNoir { + return { + _opt: { + _is_some: maxBlockNumber.isSome, + _value: mapFieldToNoir(maxBlockNumber.value), + }, + }; +} + +export function mapMaxBlockNumberFromNoir(maxBlockNumber: MaxBlockNumberNoir): MaxBlockNumber { + return new MaxBlockNumber(maxBlockNumber._opt._is_some, mapFieldFromNoir(maxBlockNumber._opt._value)); +} + /** * Maps combined accumulated data from noir to the parsed type. * @param combinedAccumulatedData - The noir combined accumulated data. @@ -986,25 +994,6 @@ export function mapCombinedAccumulatedDataFromNoir( combinedAccumulatedData: CombinedAccumulatedDataNoir, ): CombinedAccumulatedData { return new CombinedAccumulatedData( -<<<<<<< HEAD - mapMaxBlockNumberFromNoir(combinedAccumulatedData.max_block_number), - mapTupleFromNoir( - combinedAccumulatedData.note_hash_read_requests, - MAX_NOTE_HASH_READ_REQUESTS_PER_TX, - mapSideEffectFromNoir, - ), - mapTupleFromNoir( - combinedAccumulatedData.nullifier_read_requests, - MAX_NULLIFIER_READ_REQUESTS_PER_TX, - mapReadRequestContextFromNoir, - ), - mapTupleFromNoir( - combinedAccumulatedData.nullifier_key_validation_requests, - MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, - mapNullifierKeyValidationRequestContextFromNoir, - ), -======= ->>>>>>> master mapTupleFromNoir(combinedAccumulatedData.new_note_hashes, MAX_NEW_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(combinedAccumulatedData.new_nullifiers, MAX_NEW_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), mapTupleFromNoir( @@ -1072,7 +1061,6 @@ export function mapAccumulatedNonRevertibleDataFromNoir( accumulatedMetaData: PrivateAccumulatedNonRevertibleDataNoir, ): PrivateAccumulatedNonRevertibleData { return new PrivateAccumulatedNonRevertibleData( - mapMaxBlockNumberFromNoir(accumulatedMetaData.max_block_number), mapTupleFromNoir(accumulatedMetaData.new_note_hashes, MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir( accumulatedMetaData.new_nullifiers, @@ -1096,7 +1084,6 @@ export function mapAccumulatedNonRevertibleDataToNoir( accumulatedMetaData: PrivateAccumulatedNonRevertibleData, ): PrivateAccumulatedNonRevertibleDataNoir { return { - max_block_number: mapMaxBlockNumberToNoir(accumulatedMetaData.maxBlockNumber), new_note_hashes: mapTuple(accumulatedMetaData.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(accumulatedMetaData.newNullifiers, mapSideEffectLinkedToNoir), public_call_stack: mapTuple(accumulatedMetaData.publicCallStack, mapCallRequestToNoir), @@ -1128,16 +1115,6 @@ export function mapCombinedAccumulatedDataToNoir( combinedAccumulatedData: CombinedAccumulatedData, ): CombinedAccumulatedDataNoir { return { -<<<<<<< HEAD - max_block_number: mapMaxBlockNumberToNoir(combinedAccumulatedData.maxBlockNumber), - note_hash_read_requests: mapTuple(combinedAccumulatedData.noteHashReadRequests, mapSideEffectToNoir), - nullifier_read_requests: mapTuple(combinedAccumulatedData.nullifierReadRequests, mapReadRequestContextToNoir), - nullifier_key_validation_requests: mapTuple( - combinedAccumulatedData.nullifierKeyValidationRequests, - mapNullifierKeyValidationRequestContextToNoir, - ), -======= ->>>>>>> master new_note_hashes: mapTuple(combinedAccumulatedData.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(combinedAccumulatedData.newNullifiers, mapSideEffectLinkedToNoir), private_call_stack: mapTuple(combinedAccumulatedData.privateCallStack, mapCallRequestToNoir), @@ -1198,6 +1175,7 @@ export function mapPublicKernelCircuitPublicInputsToNoir( return { aggregation_object: {}, constants: mapCombinedConstantDataToNoir(inputs.constants), + rollup_validation_requests: mapRollupValidationRequestsToNoir(inputs.rollupValidationRequests), validation_requests: mapValidationRequestsToNoir(inputs.validationRequests), end: mapPublicAccumulatedRevertibleDataToNoir(inputs.end), end_non_revertible: mapPublicAccumulatedNonRevertibleDataToNoir(inputs.endNonRevertibleData), @@ -1213,6 +1191,7 @@ export function mapRollupKernelCircuitPublicInputsToNoir( ): RollupKernelCircuitPublicInputsNoir { return { aggregation_object: {}, + rollup_validation_requests: mapRollupValidationRequestsToNoir(inputs.rollupValidationRequests), constants: mapCombinedConstantDataToNoir(inputs.constants), end: mapCombinedAccumulatedDataToNoir(inputs.end), }; @@ -1239,12 +1218,6 @@ export function mapPublicAccumulatedNonRevertibleDataToNoir( data: PublicAccumulatedNonRevertibleData, ): PublicAccumulatedNonRevertibleDataNoir { return { -<<<<<<< HEAD - max_block_number: mapMaxBlockNumberToNoir(data.maxBlockNumber), - nullifier_read_requests: mapTuple(data.nullifierReadRequests, mapReadRequestContextToNoir), - nullifier_non_existent_read_requests: mapTuple(data.nullifierNonExistentReadRequests, mapReadRequestContextToNoir), -======= ->>>>>>> master new_note_hashes: mapTuple(data.newNoteHashes, mapSideEffectToNoir), new_nullifiers: mapTuple(data.newNullifiers, mapSideEffectLinkedToNoir), public_call_stack: mapTuple(data.publicCallStack, mapCallRequestToNoir), @@ -1346,6 +1319,7 @@ export function mapPrivateKernelTailCircuitPublicInputsFromNoir( ): PrivateKernelTailCircuitPublicInputs { return new PrivateKernelTailCircuitPublicInputs( AggregationObject.makeFake(), + mapRollupValidationRequestsFromNoir(inputs.rollup_validation_requests), mapAccumulatedNonRevertibleDataFromNoir(inputs.end_non_revertible), mapFinalAccumulatedDataFromNoir(inputs.end), mapCombinedConstantDataFromNoir(inputs.constants), @@ -1360,6 +1334,7 @@ export function mapPrivateKernelTailCircuitPublicInputsToNoir( ): PrivateKernelTailCircuitPublicInputsNoir { return { aggregation_object: {}, + rollup_validation_requests: mapRollupValidationRequestsToNoir(inputs.rollupValidationRequests), constants: mapCombinedConstantDataToNoir(inputs.constants), end: mapFinalAccumulatedDataToNoir(inputs.end), end_non_revertible: mapAccumulatedNonRevertibleDataToNoir(inputs.endNonRevertibleData), @@ -1430,6 +1405,7 @@ export function mapPublicKernelCircuitPublicInputsFromNoir( ): PublicKernelCircuitPublicInputs { return new PublicKernelCircuitPublicInputs( AggregationObject.makeFake(), + mapRollupValidationRequestsFromNoir(inputs.rollup_validation_requests), mapValidationRequestsFromNoir(inputs.validation_requests), mapPublicAccumulatedNonRevertibleDataFromNoir(inputs.end_non_revertible), mapPublicAccumulatedRevertibleDataFromNoir(inputs.end), @@ -1445,16 +1421,6 @@ export function mapPublicAccumulatedNonRevertibleDataFromNoir( data: PublicAccumulatedNonRevertibleDataNoir, ): PublicAccumulatedNonRevertibleData { return new PublicAccumulatedNonRevertibleData( -<<<<<<< HEAD - mapMaxBlockNumberFromNoir(data.max_block_number), - mapTupleFromNoir(data.nullifier_read_requests, MAX_NULLIFIER_READ_REQUESTS_PER_TX, mapReadRequestContextFromNoir), - mapTupleFromNoir( - data.nullifier_non_existent_read_requests, - MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, - mapReadRequestContextFromNoir, - ), -======= ->>>>>>> master mapTupleFromNoir(data.new_note_hashes, MAX_NON_REVERTIBLE_NOTE_HASHES_PER_TX, mapSideEffectFromNoir), mapTupleFromNoir(data.new_nullifiers, MAX_NON_REVERTIBLE_NULLIFIERS_PER_TX, mapSideEffectLinkedFromNoir), mapTupleFromNoir( diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts index 93530000952..68d78111eab 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts @@ -526,6 +526,7 @@ export class SoloBlockBuilder implements BlockBuilder { tx.data.aggregationObject, tx.data.combinedData, tx.data.constants, + tx.data.rollupValidationRequests, ); return new RollupKernelData( inputs, diff --git a/yarn-project/sequencer-client/src/sequencer/processed_tx.ts b/yarn-project/sequencer-client/src/sequencer/processed_tx.ts index 7133a8c08ef..49cf7b5ef75 100644 --- a/yarn-project/sequencer-client/src/sequencer/processed_tx.ts +++ b/yarn-project/sequencer-client/src/sequencer/processed_tx.ts @@ -9,6 +9,7 @@ import { PublicAccumulatedNonRevertibleData, PublicAccumulatedRevertibleData, PublicKernelCircuitPublicInputs, + RollupValidationRequests, SideEffect, SideEffectLinkedToNoteHash, ValidationRequests, @@ -110,6 +111,7 @@ export function getPreviousOutputAndProof( } else { const publicKernelPublicInput = new PublicKernelCircuitPublicInputs( tx.data.aggregationObject, + tx.data.rollupValidationRequests, ValidationRequests.empty(), PublicAccumulatedNonRevertibleData.fromPrivateAccumulatedNonRevertibleData(tx.data.endNonRevertibleData), PublicAccumulatedRevertibleData.fromPrivateAccumulatedRevertibleData(tx.data.end), diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 9cd28abe36a..df939d60c83 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -124,6 +124,7 @@ describe('public_processor', () => { hash, data: new PublicKernelCircuitPublicInputs( tx.data.aggregationObject, + tx.data.rollupValidationRequests, ValidationRequests.empty(), PublicAccumulatedNonRevertibleData.fromPrivateAccumulatedNonRevertibleData(tx.data.endNonRevertibleData), PublicAccumulatedRevertibleData.fromPrivateAccumulatedRevertibleData(tx.data.end), diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 543a2887af7..ae278e45d44 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -2787,7 +2787,7 @@ __metadata: version: 0.0.0-use.local resolution: "@noir-lang/noirc_abi@portal:../noir/packages/noirc_abi::locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@noir-lang/types": 0.24.0 + "@noir-lang/types": 0.25.0 languageName: node linkType: soft From cf93e0ce556f59c93c7fa70d88febe40a99c6119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 13:17:09 +0000 Subject: [PATCH 15/36] Use Option.eq --- .../crates/types/src/abis/max_block_number.nr | 49 +------------------ 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr index 8ced493bc39..9ca1368729f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr @@ -1,4 +1,4 @@ -use crate::{constants::{MAX_BLOCK_NUMBER_LENGTH}, traits::{Deserialize, Serialize}}; +use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize}}; struct MaxBlockNumber { _opt: Option @@ -12,15 +12,7 @@ impl Default for MaxBlockNumber { impl Eq for MaxBlockNumber { fn eq(self, other: Self) -> bool { - // Option does not impl Eq, so we do this manually for now - // TODO: replace with self._opt == other._opt once https://github.com/noir-lang/noir/pull/4549 is merged - if self._opt.is_none() & other._opt.is_none() { - true - } else if self._opt.is_some() & other._opt.is_some() { - self._opt.unwrap_unchecked() == other._opt.unwrap_unchecked() - } else { - false - } + self._opt == other._opt } } @@ -153,40 +145,3 @@ fn get_lower_with_u32_some() { assert_eq(MaxBlockNumber::get_lower_with_u32(a, b).unwrap(), 13); assert_eq(MaxBlockNumber::get_lower_with_u32(a, c).unwrap(), 8); } - -// TODO: these are Option.Eq tests, remove once https://github.com/noir-lang/noir/pull/4549 is merged -#[test] -fn eq_none_none() { - let a = MaxBlockNumber::default(); - let b = MaxBlockNumber::default(); - assert(a.eq(b)); -} - -#[test] -fn eq_none_some() { - let a = MaxBlockNumber::default(); - let b = MaxBlockNumber::new(42); - assert(!a.eq(b)); -} - -#[test] -fn eq_some_nome() { - let a = MaxBlockNumber::new(42); - let b = MaxBlockNumber::default(); - assert(!a.eq(b)); -} - -#[test] -fn eq_some_some_neq() { - let a = MaxBlockNumber::new(42); - let b = MaxBlockNumber::new(13); - assert(!a.eq(b)); -} - -#[test] -fn eq_some_some_eq() { - let a = MaxBlockNumber::new(42); - let b = MaxBlockNumber::new(42); - assert(a.eq(b)); -} - From e8f3fa60f4aeaf60896c5b7ec9b580d81670b42c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 13:17:15 +0000 Subject: [PATCH 16/36] Fix typos --- .../crates/public-kernel-lib/src/common.nr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr index 66d657dd3b8..c9eaaf26ffb 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr @@ -68,13 +68,12 @@ pub fn initialize_emitted_end_values( } let start_non_revertible = previous_kernel.public_inputs.end_non_revertible; - circuit_outputs.end_non_revertible.new_note_hashes = array_to_bounded_vec(start_non_revertible.new_note_hashes); circuit_outputs.end_non_revertible.new_nullifiers = array_to_bounded_vec(start_non_revertible.new_nullifiers); circuit_outputs.end_non_revertible.public_data_update_requests = array_to_bounded_vec(start_non_revertible.public_data_update_requests); // TODO - should be propagated only in initialize_end_values() and clear them in the tail circuit. The - // max_block_number must be propated to the rollup however. + // max_block_number must be propagated to the rollup however, and not cleared. let start = previous_kernel.public_inputs.validation_requests; circuit_outputs.validation_requests.max_block_number = start.for_rollup.max_block_number; circuit_outputs.validation_requests.public_data_reads = array_to_bounded_vec(start.public_data_reads); From 1f1b9c48fe807c1a3f7a3d06458c00e63580aa7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 14:55:28 +0000 Subject: [PATCH 17/36] Add sequencer checks --- .../end-to-end/src/e2e_max_block_number.test.ts | 11 ++++------- .../sequencer-client/src/sequencer/sequencer.ts | 9 +++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/yarn-project/end-to-end/src/e2e_max_block_number.test.ts b/yarn-project/end-to-end/src/e2e_max_block_number.test.ts index 9add997d377..c54dab89ca0 100644 --- a/yarn-project/end-to-end/src/e2e_max_block_number.test.ts +++ b/yarn-project/end-to-end/src/e2e_max_block_number.test.ts @@ -5,9 +5,9 @@ import { setup } from './fixtures/utils.js'; describe('e2e_max_block_number', () => { let wallet: Wallet; + let pxe: PXE; let teardown: () => Promise; - let pxe: PXE; let contract: TestContract; beforeAll(async () => { @@ -41,10 +41,7 @@ describe('e2e_max_block_number', () => { }); }); - // These currently cause the sequencer to error out with - // aztec:sequencer ERROR Rolling back world state DB due to error assembling block: Error: Assertion failed: kernel max_block_number is smaller than block number - // and it it seemingly retries until the test timeouts. - describe.skip('when requesting max block numbers lower than the mined one', () => { + describe('when requesting max block numbers lower than the mined one', () => { let maxBlockNumber: number; beforeEach(async () => { @@ -57,7 +54,7 @@ describe('e2e_max_block_number', () => { it('invalidates the transaction', async () => { await expect( contract.methods.request_max_block_number(maxBlockNumber, enqueuePublicCall).send().wait(), - ).rejects.toThrow(); + ).rejects.toThrow('dropped'); }); }); @@ -67,7 +64,7 @@ describe('e2e_max_block_number', () => { it('invalidates the transaction', async () => { await expect( contract.methods.request_max_block_number(maxBlockNumber, enqueuePublicCall).send().wait(), - ).rejects.toThrow(); + ).rejects.toThrow('dropped'); }); }); }); diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index 5e58ba6fd83..719d9edae4d 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -276,6 +276,10 @@ export class Sequencer { // again if the current block fails to be published for some reason. this.log(`Skipping tx with double-spend for this same block ${Tx.getHash(tx)}`); continue; + } else if (this.isMaxBlockNumberTooLow(tx, globalVariables.blockNumber)) { + this.log(`Deleting low max block number tx ${Tx.getHash(tx)}`); + txsToDelete.push(tx); + continue; } tx.data.end.newNullifiers.forEach(n => thisBlockNullifiers.add(n.value.toBigInt())); @@ -384,6 +388,11 @@ export class Sequencer { return false; } + protected isMaxBlockNumberTooLow(tx: Tx | ProcessedTx, blockNumber: Fr): boolean { + const maxBlockNumber = tx.data.rollupValidationRequests.maxBlockNumber; + return maxBlockNumber.isSome && maxBlockNumber.value < blockNumber; + } + get coinbase(): EthAddress { return this._coinbase; } From 1d8eab1a794d948d2eb550c98da4b08dc3024d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 17:52:21 +0000 Subject: [PATCH 18/36] Add some doc notes --- .../contracts/writing_contracts/functions/context.md | 12 ++++++++++-- .../contracts/test_contract/src/main.nr | 10 ++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/docs/developers/contracts/writing_contracts/functions/context.md b/docs/docs/developers/contracts/writing_contracts/functions/context.md index f878aae70fc..b496a16182e 100644 --- a/docs/docs/developers/contracts/writing_contracts/functions/context.md +++ b/docs/docs/developers/contracts/writing_contracts/functions/context.md @@ -1,6 +1,6 @@ --- -title: Function Context ---- + +## title: Function Context # The Function Context @@ -94,6 +94,14 @@ The return values are a set of values that are returned from an applications exe return_values : BoundedVec, +## Max Block Number + +Some data structures impose time constraints, e.g. they may make it so that a value can only be changed after a certain delay. Interacting with these in private involves creating proofs that are only valid as long as they are included before a certain future point in time. To achieve this, the `request_max_block_number` function can be used to set this property: + +#include_code max-block-number /noir-projects/aztec-nr/aztec/src/context/private_context.nr rust + +A transaction that requests a maximum block number will never be included in a block with a block number larger than the requested value, since it would be considered invalid. This can also be used to make transactions automatically expire after some time if not included. + ### Read Requests diff --git a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr index 9a77d577094..7ea2db103d3 100644 --- a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr @@ -20,7 +20,7 @@ contract Test { lifecycle::{create_note, destroy_note}, note_getter::{get_notes, view_notes}, note_getter_options::NoteStatus }, - deploy::{deploy_contract as aztec_deploy_contract}, + deploy::deploy_contract as aztec_deploy_contract, oracle::{get_public_key::get_public_key as get_public_key_oracle, context::get_portal_address, rand::rand}, log::emit_unencrypted_log_from_private }; @@ -65,7 +65,9 @@ contract Test { #[aztec(private)] fn request_max_block_number(max_block_number: u32, enqueue_public_call: bool) { + // docs:start:request-max-block-number context.request_max_block_number(max_block_number); + // docs:end:request-max-block-number if enqueue_public_call { let _ = context.call_public_function( @@ -274,11 +276,7 @@ contract Test { } #[aztec(public)] - fn consume_mint_public_message( - to: AztecAddress, - amount: Field, - secret: Field - ) { + fn consume_mint_public_message(to: AztecAddress, amount: Field, secret: Field) { let content_hash = get_mint_public_content_hash(to, amount); // Consume message and emit nullifier context.consume_l1_to_l2_message(content_hash, secret, context.this_portal_address()); From 7445f096507ef23782b3d9d9cdf4aeb7655ca6a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 19:00:24 +0000 Subject: [PATCH 19/36] Update snapshot --- .../__snapshots__/contract_class.test.ts.snap | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) 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 e11676e0327..e9267a570fe 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,30 +9,18 @@ exports[`ContractClass creates a contract class from a contract compilation arti "selector": { "value": 2381782501 }, -<<<<<<< HEAD - "bytecode": "0x1f8b08000000000000ffed9d779815c5baee7b604074cd8898b3830915816118f200833967141111866100058628823991a3398224c95940411110c3ce3927756f773c61ff75ef39e7deebb95d6bd577e69da27a316bec5abc6b56f5f3d4acea6faafbfbd5db5f57a7eaae7f06415010a4a6e6613a3f387492ff57eadfd26f36758e715da52e390b7284b3598e7036cf11cec21ce16c91239c2d7384f3a81ce16c95239c47c7c8a9d89a05f5a7b8798f71a06bdc8c891cd3b42807342dce314d8fcd014d5b07b9d1461d97239c6d7284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce13c234738cfcc11ceb37284f3ec1ce13c2747384b7284b36d8e709e9b239ce7e508e7f939c279418e705e1823677be06ca77f2fd2bf17ebdf4bf4af94bd54ff76d0bf1d751d0bf57c27c51526f590a6ccf85f97309587a96b98ba19ffeb1ea61e61ea19a65efa7f25fa7fbdc35411a63e61ea1ba67e5a83fe61ba2c4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e300d08d39d61ba2b4c03c374779806192cf784697098ee0dd39030dd17a6a1611a16a6aa300d0f5375984684a9264c23c3342a4ca3c3747f981e08d398308d0dd3b830d586697c9826846962982685697298a684e9c1304d0dd343619a16a6e986660f87e991303d1aa6c70ccec7c3f444989e0cd353617a3a4ccf84e9d930cd08d3cc30cd0ad3ec30cd09d3dc30cd0bd3fc302d08d3c2302d0ad3e2303d17a6e7c3f442985e0cd34b617a394caf84e9d530bd16a6d7c3f44698de0cd312cd223bc2d230bd15a665615a1ea615615a19a655617a3b4cabc3b4264c6bc3b42e4cebc3b4214c1bc3b4294c9bc3b4254c5bc3b42d4cdbc3f44e9876846967987685e9dd30bd17a6dd61da13a6f7c3f44198f686e9c330ed0bd3fe301d08d347613a18a68fc3f449983e0dd36761fa5698be1da6ef84e9bb61fa5e98be6f68fe8330fd304c3f0ad38fb5ed27faf7a7baacdcbffb59987eaef3bfd0bfbfd4bfbfd2bfbf3696f94d987e6bd87e17a6df1bb63f84e9739dff42ff7ea97fffa87fffa47fbfd2bf7fd6bf7fd1bf7fd5bf7fd3bf7fd7bfffd0bfffa27fff55fffe9bfefd77fdfbcf30ed699bcab70aeaa6ca20a636aabc26f9ec47c46f17d49f9416cdf5ffe4b744db0bf5bcfc8a762df47c0bc3de52cfb734d6d34acfb732ec6df47c1bc37e829e3fc1b09fa4e74f32eca7e8f9530cfbf97afe7cb02702b837acedcad65c9b0ac026f1da0c6c2db4ad39d85acaeac07694b6b5009b6cdf96603b5adb8e02db31dad60a6c096d3b5ab40c5391b6550671c54ae930b5dee2b8d7ab9f971d1b3fef70b5ded68e788f8b9f77845a6f1b07bc2a3e8ed7eb3a0ee2e6046d6b03b613b5ed78b09da46d2780ed646d3b116ca768db49603b55db4e06db69da760ad84ed7b653c17686b69d06b633b5ed74b09da56d6780ed6c6d3b136ce768db59602bd1b6b3c1a69bdce01cb09dab6d25603b4fdbda82ed7c6d3b176c1768db7960bb50dbce079bb4bf17804dce172fd436d5761c5d00cb68bbb45bc965a4cd06dbc5d25e83ed1269abc1d65eda69b05d0abec5d601da1ab175d43669b7d4ff7ae97c6510d77e5256a3d6db3beef5866b56ebed13ff7a93cf1cfb06755a57829fdea0553f9d8fb15f5367f45da093f8117b21e4af83b2524ef490638fb0ab634c85cef74bb35c2f63b962285361a97f65106ffdfb183c7d0ce616907713b35dbaf8986df09471cc0e84b266ecc97950538cd91b81c341cc76f731dbe029e398ad81b266ecc9b970538cd97b80c341cc56b989d9b2521fb3a9fb6641608f3db91e6a8a313b1a38e28fd9ae3e661b3e651cb34f415933f6e49ab829c6ec54e0883f66bb57f97383064f19c7ec22286bc69edc9f698a31fb2c703888d91adfce3678ca386697405933f6e45e61538cd9e78123fe98ede92866bbf8980d52cf4083c01e7b72dfba29c6ec32e0883f6687fbfbb30d9f328ed9dd50d68c3d7986d2146376b3ceabe70c3fd1cf19ce04db4fb5ed2ce08d3fb6abbb3a8aed321fdba9be2141608f51799ed71463fb439d5771fc0be88f20b65f6a5b5bb0fd4adbce05dbafb5ed3ca897837da0caef030d9e32de077e0b65cd589667cb4d711ff811703888d96a1fb30d9e328ed9bf435933f6a49f43538cd93f00878398adf131dbe029e398fd0f286bc6de453adf146356fa9aaaf3852ff4f9c22560fb52dbda83ed8fda7629d8fea46d1dc0f695b67504db9fb5ad13d8fea26da560fbabb67506dbdfb4ad0c6c7fd7b62e60fb87b69583ed5fb4ad2bd8fe55dbba81eddfb4ad3bd8fe5ddb7a80ed9fdad653dbd4f32ee97b25e7adad80bf328877db4abf4b59b7cc77ce82efd686efd659f4ddc6f0ddc6e2bbcc81ef04f890a9c098af847c995b9ed262e0415fe5f1fbeaa2eade256878ddcb81a7ab83ba27c0474378ba024fb7f87992fd7fbbc7bfdee436ee62689a005f5da05e3d1cd4ab007cc9ba655efc15830ddbd61e16c69ef1339615802f59b7ccf70446b1615b2fef5cc9fea38e87ed0aea781dec4bc97322f127df2d138e72b04b995bdbd6b1b5d76c45f07f3cee75336c8ee2321917e24bd62df3e2af08ead32dfb8c650d65ec6a30ba6a230ac097acdbfbaedb0e92c7e3b8836b1d6b9b26be7b67c1774fc377b9e11bdb4e99d21ddb7a0273ecd79cfad85611ff7a4bf1fa44ae0dc50f9e3fe0355c5c7542df726d287ec45e08f99b0aeaca4a39d143da616157b12cdb12d9cde57a18cb154399de96fa5706f1d6bfc2e0a93098d536b91c8e850ef687640cf4363864be1cb4ab88d0ae376827652e02ed5cb567bd0c1e99ef063cd28e75071e57d744513cd9b81e3b9c6f3c87c5eb67f93f9e07b8da5e9d0d4699b76daf9ec0683b5771703d93f65ca52b308aad17f07471a459d476ed42e2db41ac24db23f121e7e6b2ff7603bb94e9a95fa8536de5fdd056ba88118c47991a7acd1bff762a4b5e8377cd8007b79d83ebaace8ee2b114efdf7c1dc41b6b66bbd4d5d02aea1e8fabb6bc8bc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae1b09a3d9ffcdd57dfee4f70ff5ba64fdeab9ceff71da1facac14fbc7483f884b8c3a174299e2667565ff1bfa8399cfa9b08f6437b7da25b725f6c7ac8479f1877dad705b32f4772a89cd77d97057cfdbd437c0d47734cdbe9fdd2c9abae8ff8c9a16189a627ffc4b0d1e15a715cdebd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd2ca8df7ee071c655ff1d69abe579796fc377219439a359ddb691be5532c670176339ecf723eb96652e017b85b1eed67a59e16861acbf3b2c2b65ce8636757fb33acd1cb4956599f65dc7e7e6f11f8753cff1bb64c0d319785cb4338ece374a711f88fb39bed93fcd761e2365b06f9f837e9569fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43f279867cab4cd69ffc5e70b33abfae9fc3c933a7f6469df1ddd17f36ab2bbb5de78b8243fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77ea39be8bb121e4397e1743d7728ba6aef6577cc68a9ae2fedad5e0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b675e06adb9795ba6c37f0bb2995c1a1f18ddf53f921b47d3fd679ecc3817d47beb0fc5fa674cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb33aeab40a7fe86068590ffbc595d59292765456b6157fb887c0306d9cde5ba1acb154399be96fa5706f1d6dffcd66a3f83596d939f419c7d01c77f576d52df088d2e018da40c9e07b9ea9367b69166ff46ecb7d7d22883e72c52e66fd04645f51fb5f53974751c8bea73683b37ee0c8c661dcd7e9ef9de4feb3fa1bd88bb9fd67f420c613fadc0587f7b58bf70b50ca28f2d52e6ff19eb37cfc96519ec07f63ffd9fe07b2e653a9fc939f991babeb29d93e372517557ccf81db4ca189931269005cf13a4cc315a6bd9661511dc3d2dcb16472c2b5a99df0a2b0a0ed5cfcd77d652fb7c3fa32e12d7f80d72297302d4c5cd794bea1cd0d537e52aa14e2a5f66a9ab943915f6b5d3753e01db09f7db8b2dff9729dd39208ee17e59fc754e6edfcb81b312fca0ef2b803526df9dd1b79c038a1fb11742fea2e67565a59ce8215a0bbbda47e43c0ad9cde57a1bcb154399fe96fa5706f1d6ff3283e73283596d93b320ce2e867ee8aedaeafe111ab5078da40cde53b47d07d4768c71d5b73fea1853068c66bb89c749976ce67b42e67d35db3982949165f11ca13bb4b3094b59f37ea11c2fe3ec378cef4a7407bff8ae84ab6f37f702dd2a611ecf0b8ea46f17dfb155fea2c64ce89505df51632664c3771bc3779b2cfaf69a7bcd993477300641f2fd33fc66a99ad29d97e2b804b25c33607431964322a8ffedf1c331e2f80eb25c736074717cc8f4dbe7dd8151962b044617ef96e2f81b0d61c46f0ce3715e181d7c2bb67363bf158bf7f45a0223d33b9bf86cea286074710fb5b1efeae1f97c2bf875352e51970c18f17c5e963b1a185ddc1bc767830d61c4eb2259ee186074f10c2bd3f19df0dbf3786fd92563ba63bbe3be286599de7ba970cb93f65c037d3b18d730a905de673c9c167ddcf2a43df741df0eeefb25b5c071060fa7053e1b7431ee6122a8ff1cee703cf8fc52963b1e182b1d31f6cb80b11218ffe75e3130f677c4589901637f6014fb89c0e8e0fe6b92b17f068c789f52963b09182f77c47859068c9703a32c773230bab8979a00bf0d61bc021865b95380f14a478c5764c0782530ca72a702e3558e18afcc80f12a6094e54e03c6ab1d315e9501e3d5c028cb9d0e8cd73862bc3a03c66b8051963b0318af75c4784d068cd702a32c7726305ee788f1da0c18af034659ee2c60bcde11e37519305e0f8cb2dcd9c0788323c6eb3360bc011865b97380f146478c3764c0782330ca7225c0789323c61b3360bc091865b9b6c078b323c69b3260bc191865b97381f116478c3767c0780b30ca72e701e3ad8e186fc980f1566094e5ce07c6db1c31de9a01e36dc028cb5d008cb73b62bc2d03c6db815196bb1018ef70c4787b068c7700e3ed16c6018e18efc880710030ca729702e39df13326afa50764c07827f0dc153f4f52b33b33e0b9cb2d4ff2bb7a775a7cdd1dbfafe4b6181834bcee7703cfa0f87992dbe2ee0c7884a1189643cdee899f31a9d9a00c18ef019ec1f1f32435bb27039ec1a0d93d16cdee8d9f31a9d9e00c18ef059e21f1f32435bb37039e21a0d9bd16cdee8b9f31a9d9900c18ef039ea1f1f32435bb2f039ea1419d66f759341b163f6352b3a119300e039eaaf879929a0dcb80a70a341b66d16c78fc8c49cdaa32601c0e3cd5f1f324351b9e014f356836dca2d988f819939a5567c03802786ae2e7496a3622039e1ad06c8445b391f1332635abc9807124f08c8a9f27a9d9c80c78468166232d9a8d8e9f31a9d9a80c184703cffdf1f324351b9d01cffda0d9688b660f3862bc3f03c6072c3c717f27fb7e8bafb18eea3e266878dd85a11896c37e12e31c318ecd80711c30ca72d84fa2d611e3b80c186b8151964b38664cd74fa2167c8f8fdf77b25daa0d1aaecf78b73c69fb49a0ef098eb4181f345c8b096e79d2f69340df131d69312168b81613816792032d12e0a3213cc2500ccb613f89c98e182765c03819186539ec2731c511e3e40c18a700a32c87fd241e74c4382503c607815196c37e12531d313e9801e3546094e5b09fc4438e18a766c0f81030ca72d84f629a23c68732609c068cb21cf69398ee88715a068cd3815196c37e120f3b629c9e01e3c3c028cb613f89471c313e9c01e323c028cb613f89471d313e9201e3a3c028cb613f89c71c313e9a01e363c028cb613f89c71d313e9601e3e3c028cb613f89271c313e9e01e313c028cb613f89271d313e9101e393c028cb3de09831ddf5cb934ddc77d4b54a53f71d755dd2d47dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993efa71cf84e800f990a8cf94ac80b43312cf780676cd28cc853121f4f29d61d7d3d4d50f7a72d3c058eea8ebe9e21a8bb30e41ae35339c088fbb8d7b1f18c8e752c6b2ca3e279d611cf3319f03c0b3c331cf13c9b01cf0ce099193f4f32a66664c0230cc5b0dc0339c0f8540e307a1dbd8e4c8c5ec7fcd1d1337a46cfe8198f04632eb4e19e3127e2b1acb18c8a6756fc3c49cd6666c0330b3493e5eeca01c6a77380f129b78c658d65543cb3e3e7496a362b039ed9a0992c77975bc6b2c6322a9e39f1f324359b9d01cf1cd06cb64533078c658d65543c73e3e7496a3627039eb9a0d91c8b660e18cb1acba878e6c5cf93d46c6e063cf340b3b916cd1c3096359651f1cc8f9f27a9d9bc0c78e68366f32c9a39602c6b2ca3e259103f4f52b3f919f02c00cde65b3473c058d65846c5b3307e9ea4660b32e059089a2db068e680b1acb18c8a6751fc3c49cd1666c0b308345b68d18c95f1811c607c2a07181deb58d65846c5b3d811cfa20c781603cf738e781667c0f31cf03c1f3f4f32a69ecb8047188a61b9077280f1a91c60f43a7a1d9918bd8ef9a3a367f48c9e3133c6a77380d16f6bcfc8cae8e0fa2aedbb48cf3571df51ef223575df51ef223575df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f771cee4fb85f87d9765fa8d991780c7c5376f1cd5b354adf745bdaeaf63d44f69f592a1d5738656c550e645d0ef2507fa15805f59b7cc8bbf4c99db11303bf25d766cb88ea3a1fee2e329430fe5ff6547758f6aeb5f6ee2bea3dafaa6ee3baaad6feabe7d9cfb38cf07df3ece7d9ce7836f1fe73ece597c63be455077de2edf3f55eb7845e70bf5bc947f1aec52e6e1a352bfad03bf0fb9f0edf7217facc807df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b738c870959e0090c9e200dcf2c329e6a329e81643cd793f1f423e3594cc6f310194f0f329e31643cf791f1dc46c6f32419cf55643c8f93f17426e39944c6339b8ca7868c671019cf8d643cfdc978a693f17420e3e946c6338e8c671819cf1d643ca5643ccf92f15c43c6938df79732e1e948c65341c633858c670e19cf28329e8bc9780693f15c44c6733319cfe5643cc792f1b426e32927e379848c673c19cf70329e3bc978ae23e3e94bc6b3888c672a194f4f329eb9643cf793f1cc20e31942c6732b19cf95643c9790f13c46c65346c6d39c8c672219cf08329ebbc978da93f1dc40c65349c6338d8ca73b19cf3c329eb1643c43c9786e27e379868ce76a329e27c8787a93f14c26e31949c6730f194f3b329e9bc8782e23e32922e32926e3e94ac6f33019cf7c329e5a329e99643c55643c03c878ae25e3e943c6b3908ce741329e5e643ca3c978ee25e3b9858ce70a329e4e643c8f92f11c47c6d3868ca70b19cf02329e02029e4470e8182609f8ff0b606b662cab3efbfa42dbbaffbfaaedcd6099d774beb965ddaf824dbe25fb9a6559d4e955a84ba5ce977eb329a913faaa8479f157041caf91f02c20e3e942c6d3868ce738329e47c9783a91f15c41c6730b19cfbd643ca3c9787a91f13c48c6b3908ca70f19cfb5643c03c878aac8786692f1d492f1cc27e379988ca72b194f31194f1119cf65643c3791f1b423e3b9878c672419cf64329ede643c4f90f15c4dc6f30c19cfed643c43c978c692f1cc23e3e94ec6338d8ca7928ce706329ef6643c7793f18c20e39948c6d39c8ca78c8ce731329e4bc878ae24e3b9958c670819cf0c329efbc978e692f1f424e3994ac6b3888ca72f19cf75643c7792f10c27e3194fc6f308194f39194f6b329e63c9782e27e3b9998ce722329ec1643c1793f18c22e39943c633858ca7828ca72319cf0b643cd790f13c4bc6534ac6730719cf30329e71643cddc8783a90f14c27e3e94fc6732319cf20329e1a329ed9643c93c8783a93f13c4ec6731519cf93643cb791f1dc47c633868ca70719cf43643c8bc978fa91f15c4fc633908ca79a8c671619cf040bcf0b8e78e47d7759b7ccbf40e2dbc1762855eb7ddd519dded0eb6aa1d72bfce2af10cacc3c26f5ab9e0fe1b2c2657e9f00efc5bd011abde1a82eb23d0a8ced83be5f71e4dbfc5eb3ccbfd2c47db7367cb7ce13df6d0cdf6df2c4b78f731fe7f9e0dbc7b98ff37cf0ede3dcc739936f07d70665f89d34990a8cf94ac8e3f5828befcb39aa67bdebc4af63d44f69f5a6a195796d550c655e07fdde74a09fedda53e6c55fa6cced0898312e4a8278e36249fc752a53fd328f065d9718fa62bd963ad234ea18b2b489fb8e3a863475df51c790a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc9f75b3a1fe3756329fa50cf17e57ae02df0bb5ce70b62f4abd6b54cafab50af5b3896835dca344ba47e5b077e9f77e1dbeff3fed8960fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c9b79e92f7e11b0b9eacf1f158bd97897e048fa8e8ac5a6ee3b2a169bba6f1fe73ece997caf70e03b013e644ad7c76f05f02c73c0e3a89ec9671b2b8d3abd60d4a918cae0317ea5837a16805f59b7ccaf041e9926008f8b3868c836479e59643cd5643c03c978ae27e3e947c6b3988ce721329e1e643c63c878ee23e3b98d8ce749329eabc8781e27e3e94cc633898c6736194f0d19cf20329e37c9786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e8e643c15643c53c878e690f18c22e3b9988c673019cfcd643c9793f11c4bc6d39a8ca79c8ce711329ef1643cc3c978ee24e3b98e8ca72f19cf22329ea9643c3dc978e692f1dc4fc633838c670819cfad643c5792f15c42c6f318194f19194f73329e89643c23c878ee26e3694fc67303194f2519cf34329eee643cf3c878c692f10c25e3b99d8ce719329eabc9789e20e3e94dc633998c672419cf3d643cedc8786e22e3b98c8ca7888ca7988ca72b19cfc3643cf3c9786ac9786692f15491f10c20e3b9968ca70f19cf42329e07c9787a91f18c26e3b9978c672919cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243dffd4fc0ffdf049bbca3fe02d856e9fc32b035b3f868aef32bc156a8f3b28ea3c2b4b4eda1eb469d5cbd978fbe2a615efc1501c72a129e05643c5dc878da90f11c47c6f328194f27329e2bc8786e21e3594ac6732f19cf68329e5e643c0f92f12c24e3e943c6732d19cf00329e2a329e99643cb5643cf3c9781e26e3e94ac6534cc65344c6731919cf4d643cedc878ee21e31949c633998ca73719cf13643c5793f13c43c6733b19cf50329eb1643cf3c878ba93f14c23e3a924e3b9818ca73d19cfdd643c23c8782692f13427e32923e3798c8ce712329e2bc9786e25e31942c633838ce77e329eb9643c3dc978a692f12c22e3e94bc6731d19cf9d643cc3c978c693f13c42c6534ec6d39a8ce758329ecbc9786e26e3194cc6733119cf28329e39643c53c8782ac8783a92f15c43c6f32c194f2919cf1d643cc3c878c691f17423e3e940c6339d8ca73f19cf8d643c6f92f10c22e3a921e3994dc633898ca73319cfe3643c5791f13c49c6731b19cf7d643c63c8787a90f13c44c6b3988ca71f19cff5643c03c978aac9786691f14cc80e4f997ab75dde9d0c800ba74ac8af049e371de8e3a89ea5f85d83af635cafd2ea6d43aba58656c5506605e8f7b603fd0ac0afac5be6c55f2e322b1e39a71356fc0ec493248c627bd32d4f72bf7d32a83fa5db6fdf061e17ed9aa37a26f7afd5469d9eb4e82e653056573ba8a76ddf91f9d5b01d728d59f13ca3f3c29a8072cf90308a6da55b9ee4fef54c507f4ab77fad061e17ed8fa37a26f7af35469d9eb1e82e653056d738a8a76ddf91f935b01d728d59f13cabf3c29a8072cf92308aed6db73ce509a8b34ce9f6af35c0e3a2fd7154cfe4feb5d6a8d3b316dda50cc6ea5a07f5b4ed3b32bf16b68367f6cc3666c5237db1853501e56690308a6db5539ef2d204d459a674edd85ae071d1ce3bd23dd98ead33ea34c3a2bb94c1585de7a09eb67d47e6d7597c9704f16ab1be015aacb7f0accfb216e22f53e61539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5cca0b3e291b111853501e56692308a6d8d5b9ee47b413383fa5381315f09f9f5c0b3d6813e8eea99ec43bec1a8d34c8bee5206f7af0d0eea69db77647e036c874c98d7e520b3d7b971cc8a6796ce0b6b02cacd226114db5ab73cc9766c56507f4ad78e6d001e17edbca37a26dbb18d469d6659749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3755e5813506e3609a3d8d63be5294bbedf383ba83fa56bc736028f8b76de91eec9766c9351a7d916dda50cc6ea2607f5b4ed3b32bf09b64326cceb7290d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a678ece0b6b02cacd216114db06a73c5d92cf1de604f5a774cf1d3601cfc6d87952cf1d1ce89e7ceeb0d9a8d31c8bee5206f7afcd0eea69db77647e336c87a6cebc2e07997d6c6487d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f1ccd579614d40b9b9248c62dbe89627f9dd83b941fd295dbf9dcdc0b3c9813e8eea99ecb7b3c5a8d35c8bee5206f7af2d0eea69db77647e0b6c07cfec996dcc8a679ece0b6b02cacd236114db26b73cc9766c5e507f4ad78e6d011e17edbca37a26dbb1ad469de65974973218ab5b1dd4d3b6efc8fc56d80e9ed933db9815cf7c9d17d604949b4fc228b6cd6e7992edd8fca0fe94ae1ddb0a3c2eda7947f54cb663db8c3acdb7e82e653056b739a8a76ddf91f96db01d3cb367b6312b9e053a2fac0928b78084516c5bdcf29425a0ce32a56bc7b6018f8b76de513d93edd876a34e0b2cba4b198cd5ed0eea69db77647e3b6c875c63563c0b755e5813506e2109a3d8b6bae549ee5f0b83fa53bafd6b3bf0b8687f1cd533b97fbd63d469a145772983b1fa8e837adaf61d997f07b643ae312b9e453a2fac0928b78884516cdbdcf224f7af4541fd29ddfef50ef0b8687f1cd533b97fed30eab4c8a2bb94c158dde1a09eb67d47e677c076c83566c5b358e7853501e51693308a0d8f178b1df1141b3cc5162d8e946f35df5be78bf46f02fedf1b185db5878b0d4699c718475ed79ab536785a1b9a1d49dfaafe153a7facfec5ed55018c0cdbab7516346b63f0b431343b92be95167d74fe38fd8bdbab0f30326caf36c0e3a07d2e4f183c6a4a77beb1c3b13e8eea993cdfd819d875c7e39094c163f74e07f5b49d4bc8fc4ed80e9ed933db9815cf009d17d604941b40c22836bc4ed9153f4f79c2e05153ba766c97637d1cd533d98ebd1bd875df05ba4b198cd5771dd4b300fccaba65fe5dd80e9930afcb4166af73e39815cf409d17d604941b48c228b69dc0f35efc3ce50983474de9dab1f71cebe3a89ec9766c7760d7fd3dd05dcae0feb5db413d0bc0afac5be677c376c884795d0e327b9d1bc7ac7806e9bcb026a0dc201246b1bd0b3c7b62e7498d07843c6a4ad78eed71ac8f9b7aa6dab1f703bbee7b40772983fbd7fb0eea59007e65dd32ff3e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a67b0ce0b6b02ca0d266114db6ee0f920769ed47307e45153bae70e1f38d6c74d3d53cf1df60676dd3f00dda50cc6ea5e07f52c00bfb26e99df0bdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219a2f3c29a8072434818c5f63ef07c183f4f79c2e05153bae70e1f3ad6c7513d93cf1df60576dd3f04dda50cc6ea3e07f52c00bfb26e99df07db619f67f6cc1666c53354e7853501e58692308a6d2ff0ec8f9d27f5fc1479d494ae1ddbef581f37f54cb5630702bbeefb41772983b17ac0413d0bc0afac5be60fc076c884795d0e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d8f601cf47b1f374294d183c6a2a30e62b21ff91637ddcd433f5dce16060d7fd23d05dcae0fe75d0413d0bc0afac5be60fc27668eacceb7290d9c74676987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308aed00f07c1c3f4f79c2e0515381315f09f98f1debe3a89ec97e3b9f0476dd3f06dda50cee5f9f38a86701f89575cbfc27b01d3cb367b6312b9e1a9d17d60494ab216114db41e0f9347e9eb284c1a3a674edd8a78ef57154cf643bf65960d7fd53d05dca60ac7ee6a09e05e057d62df39fc176c83566c5334ae7853501e54691308aed13e0711077499e628347e63f25f0ade66b75be48ffe2f6aa054686ed559c05cd5a1b3cad0dcd8ea46f55fff13a7facfec5ed351e1819b657eb2c68d6c6e069636876247d2b2d26e8fc71fa17b7d7046064d85e6db2a0d9916c0f8fe4be7d24e3d46b7ee4342f38829a171c41cd0bbce6549a3b38be94e1b12c00069c2a21ff19f07c3b7e9ee47db9cf32e0f936f07c2b7e9ece8eea59aad6fb1d608f6bbd4aabef1a5a7d6668550c6590e1bb0ef42b00bfb26e99177f9ed9334731e3b9adb026a0dca7248c62fb16f0b8683754dd3be875c9fa5b84e9cb13ebfcba785e82f78a5be8f50a87f82b8432d34aeacafe59b315c1ff65bba9fa1c346c8ede61ee6c7b6e27f3e2af28c8dabddbb4f792510b17cf9b323dee1fb4f07c1d1f4f29eee7e8eb80a3ba67f2ecef808527c6ba778e7aeeb93ffeba27db8f8e7a5db27eb58ffed7894e352fc77d4fda8f8e469d0ba1cc8092bab25f43fb616b2b5cef9b724e6eee9bcd82baf64cb84ab4dd7c26f4b5b64bb98fa13cb639bdf52fee9fbda1aeaedac5a87b4cd82e9a6db74bedcde792a6ef62d0e56352cd6ccf2950c70a0b77050137c66336f73359b7ed195985a1239b66b8ad3fb6e8d8c7c2dd87809b71bfee63e8c8a6d9e1f6eb0116ee0104dc8cfbf500434736cd0eb75f0fb4700f24e066dcaf071a3ab26976b8fd7a90857b100137e37e3dc8d0914db3c3edd7832ddc8309b819f7ebc1868e6c9a1d6ebf1e62e11e42c0cdb85f0f317464d3ec70fbf5500bf750026ec6fd7a68505f4736cd0eb75f5759b8ab08b819f7eb2a434736cd0eb75f575bb8ab09b819f7eb6a434736cd0eb75fd758b86b08b819f7eb1a434736cd0eb75f8fb2708f22e066dcaf1bda6f9f75bfaeb570d7127033eed7b5868e6c9a1d6ebf1e6fe11e4fc0cdb85f8f377464d3ec70fbf5040bf704026ec6fd7a82a1239b66b6fddad1bb8419bfdbf889537d52634c7f9201cf47c0e322a61cc541a9a37e2ec9bea9fb0dad3e31b4c2b13b0e807e0efac2a4fd2681f8f3cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccf8cdf65c4e72b52ee631246b1e1332917f7f955dd3be975c9fa5b8469c0c9757e0fc4eeb7acb4c0f057091ce2af10ca9c7b4e5dd9bb355b5170e876c3b1b8715bee8bbd0ea96d69c6bfcc8bbf22a8cf7ee071f07e7e92e780c173c0a205be771a8fefb2e16e342e2b55dfc73b3aa8dbcefb8cfaa0a61fc6eebfbea60586a61f3af69d08ea6f4f61c0a912f2c8e3e2d9b0a37a26db82bd469d4c8d8ba14c3ba8e75e07f52c00bfb26e99df0b3c32e13379573118183c81451f999a91f15493f10c24e3399f8ce77a329e53c978fa91f13c44c6d3838ce768329e31643cf791f1dc46c6730e19cf55643cd93807cf84e771329ece643c2790f14c22e32924e3a921e33948c633888ce742329e1bc9782e25e3399d8ca73f19cf74329e6e643c1dc87812643ce3c8788691f1dc41c6534ac6d3968ce71a329e93c8782ac8783a92f14c21e36949c6338a8ce762329ec1643c1791f1dc4cc6732619cfe5643c8f90f19493f11c4bc6d39a8c673c19cf70329e3bc978ce23e3b98e8ce714329ebe643c53c9787a92f1b422e3b99f8c670819cfad643c6793f15c49c6730919cf63643c65643cc793f14c24e3694ec633828ce76e329ef6643c1790f1dc40c6731a194f2519cf34329eee643cc790f18c25e3194ac6733b194f0919cfd5643c4f90f1f426e339918c6732194f0b329e91643cf790f1b423e3b9898ce70c329ecbc8781e26e3e94ac65344c6534cc6534bc65345c633808ce75c329e6bc9784e26e3e943c6f320194f2f329ea3c8784693f1dc4bc6730b19cf59643c5790f17422e3398e8ca70d19cfa3643c5dc8780a087812c1a1df624ac0ff0f804dbe19f411d89a59d627cf61a5bc3a2eae6d7be8ba9b59d6fda1850175fa00ea52a9f3a5df6c4aea84be2a615efc1501c787243c5dc8781e25e36943c6731c194f27329e2bc878ce22e3b9858ce75e329ed1643c4791f1f422e379908ca70f19cfc9643cd792f19c4bc633808ca78a8ca7968ca7988ca7888ca72b19cfc3643c9791f19c41c67313194f3b329e7bc8784692f1b420e3994cc67322194f6f329e27c878ae26e32921e3b99d8c672819cf58329e63c878ba93f14c23e3a924e3398d8ce706329e0bc878da93f1dc4dc633828ca73919cf44329ee3c978cac8781e23e3b9848ce74a329eb3c9786e25e31942c6733f194f2b329e9e643c53c978fa92f19c42c6731d19cf79643c7792f10c27e3194fc6d39a8ce758329e72329e47c8782e27e339938ce766329e8bc8780693f15c4cc6338a8ca72519cf14329e8e643c15643c2791f15c43c6d3968ca7948ce70e329e61643ce3c87812643c1dc878ba91f14c27e3e94fc6733a19cfa5643c3792f15c48c633888ce720194f0d194f2119cf24329e13c8783a93f13c4ec6b39f8ce72a329e73c8786e23e3b98f8c670c19cfd1643c3dc8781e22e3e947c6732a19cff5643ce793f10c24e3a926e36946c633c1e0c1ffab77c3e4fc48be1d5408ff9fae3b97b7d6eb9232f28e92bad7f5be6153f5dde3a8beef07755325ccef81fa0afbfbc0f3be239e0f0c1ed37711e42b40b3dd864d31bee78871b7c128f3ef01a3e8b71b78763be2d963f098be8b20df07347bd7b029c65d8e18df3518657e17308a7eef02cfbb8e78de33784cdf45901f009aed346c8a718723c69d06a3ccef0046d16f27f0ec74c4b3cbe0317d17417e2068f68e61538cdb1d31be6330cafc766014fdde019e771cf1ec30784cdf45901f049a6d336c8a71ab23c66d06a3cc6f0546d16f1bf06c73c4b3dde0317d17417e3068b6c5b029c6cd8e18b7188c32bf191845bf2dc0b3c511cf5683c7f45d04f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37711e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf4590af02cdd61936c5b8d611e33a8351e6d702a3e8b70e78d639e2596ff098be8b205f0d9aad316c8a71b523c63506a3ccaf0646d16f0df0ac71c4b3d6e0317d1741be06347bdbb029c6558e18df3618657e15308a7e6f03cfdb8e78561b3ca6ef22c88f02cd561a36c5b8c211e34a8351e65700a3e8b71278563ae25965f098be8b205f0b9a2d376c8a719923c6e506a3cc2f0346d16f39f02c77c4b3c2e0317d17417e3c68f69661538c4b1d31be6530cafc526014fdde029eb71cf12c33784cdf45909f009a2d316c8af14d478c4b0c46997f131845bf25c0b3c411cf5283c7f45d04f9dbc126bcbdc0f686cef704dbeb3adf036cafe97c77b0bdaaf3ddc0f68ace7705dbcb3a5f0eb69774be0bd85ed4f932b0bda0f39dc1f6bccef705db733adf0f6c8b75be126c8b74be3fd816eafc65605ba0f397836dbece5f01b6793a7f25d8e6eafc55609ba3f357836db6ce5f03b6593a7f2dd866eafc75609ba1f3d783ed599dbf016ccfe8fc8d607b5ae76f02db533a7f33d89ed4f95bc0f680cedf0ab6bb74fe36b07da2f37780ed539dbf136c9fe9fcdd60fb96cedf03b66febfcbd60fb8ecedf07b6efeafc30b07d4fe78783edfb3a3f026c3fd0f99160fba1ce8f06db8f74fe7eb0fd58e7c780ed273a3f166c3fd5f97160fb99ce4f04dbcf757e12d87ea1f393c1f64b9d9f02b65fe9fc8360fbb5ce4f05db6f74fe21b0fd56e7a781ed773a3f1d6cbfd7f987c1f6079d7f046c9febfca360fb42e71f03db973aff38d8fea8f34f80ed4f3a8f63ddfe59e74b8278dbd9af82baa9047c8b3f55e62f3adfd22823cb1642998eba83a37ac6a1be652aedb0b4cbca26edf01b609376f875b0493bfc1ad8a41d7e156cd20ebf023669875f069bb4c32f814ddae117c126edf00b609376f879b0493bfc1cd82a757e31d8a41d5e0436698717824ddae105609376783ed8a41d9e07366987e7824ddae1396093767836d8a41d9e0536698767824ddae119609376f859b0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c30f804ddae1bbc026fbcb576093b6f913b049dbfc29d8a46dfe0c6cd2367f0b6cd2367f1b6cd2367f076cd2367f176cd2367f0f6cd2367f1f6cd236ff006cd236ff106cd236ff086cd236ff186c6375fe276093b6f9a76093b6f9676093b6f9e76093b6f9176093b6f9976093b6f9576093b6f9d76093b6f9376093b6f9b76093b6f9776093b6f9f76093b6f90f6093b6f973b049dbfc05d8a46dfe126c4fe8bcb4d5adc026cf8ad554fa0d271c8707cff985a93288b7edc7a912f28f43dd656a46c6f31c194f3519cf40329ef3c9784e25e3b98b8ce768329eb9643c2f93f1fc918c671d19cf5a329e9d643c3bc878ce21e3d94fc67302194f2119cf22329e1a329e37c8780e92f10c22e3b9908ce752329ed3c9783e21e3e940c69320e379918c673619cf1a329ed5643cef90f16c27e32925e3694bc67312194f05194f47329e96643c0bc8784691f1bc46c6733119cf60329e8bc878ce24e339968ca73519cf4c329ef1643ccf93f1bc4dc6b38a8c671b19cf56329ef3c878f692f17c40c6730a194f2b329e79643caf90f10c21e3399b8c670919cf25643cc793f13427e3594cc6b3928c670519cf9b643c5bc8783693f1b427e3b9808ce77d329e3d643ca791f11c43c633878ce725329ea1643c25643cbdc9784e24e36941c6b3908c673919cf32329ed7c9783691f16c24e3f98a8c673719cf7b643c6790f11491f11493f1cc22e3a925e379818ca78a8c670019cfb9643c2793f1f421e3398a8c673e19cf5b643c4bc9785e25e3d940c6b39e8ce75d329e5d643c6791f17422e3398e8ca70d19cf0c329e02029e0470046093ff3707db973a7f106cf2bd9efd60fb42e79780ed739d7f026c8f5a6ccd2c7cc2f025d8e4dde6c7c026f73fbf009bbc13f039d8e4bc4afcabf9ad6d0fe56f06cb889fe6167ef4f7b9854bf2b8bd6599ca20deed8dbe2a8343bfa754041c8f91f0cc20e36943c6731c194f27329eb3c8787691f1bc4bc6b39e8c670319cfab643c4bc978de22e3994fc67314194f1f329e93c978ce25e31940c65345c6f302194f2d19cf2c329e62329e22329e33c878de23e3d94dc6f31519cf46329e4d643caf93f12c23e3594ec6b3908ca70519cf89643cbdc9784ac8788692f1bc44c633878ce718329ed3c878f690f1bc4fc67301194f7b329ecd643c5bc878de24e35941c6b3928c6731194f73329ee3c9782e21e35942c6733619cf10329e57c878e691f1b422e339858ce703329ebd643ce791f16c25e3d946c6b38a8ce76d329ee7c978c693f1cc24e3694dc6732c19cf99643c1791f10c26e3b9988ce735329e51643c0bc8785a92f17424e3a920e339898ca72d194f2919cf76329e77c8785693f1ac21e3994dc6f322194f828ca70319cf27643ca793f15c4ac6732119cf20329e83643c6f90f1d490f12c22e32924e339818c673f19cf39643c3bc8787692f1ac25e35947c6f347329e97c978e692f11c4dc6731719cfa9643ce793f10c24e3a926e3798e8ca71919cf040bcf12473cd27745d62df34b9ab8ef3d86ef3d79e2fb3dc3f77b79e27b97e17b579ef8de61f8de9127beb71bbeb7e789efad86efad79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e65f85e9527be5718be57e489ef6586ef6579e27ba9e17b699ef866befe56df79926f41ecd5bf09f83f8e1fb7df11e3128351e6f703a3d870fcf7de8e78a2aedd7b13f8565a48df4579873e01ffaf00465731d5db6094795b4ce178a3158e78a2ee395410f8565ac8b71ce59b5809f83f8e9fe22aa62a0c4699b7c5148effd5c7114fd4bd923e04be9516f22d47f9067002fe8fe313b98aa93e06a3ccdb620ac79b18e08827ea1ecf0002df4a0b791623cfcc13f0ff81c0e82aa606188c326f8ba91dc033d0114fd4bda98104be9516d2f74cfa2c27e0ff8380d1554c0d341865de1653db816790239ea87b6a83087c2b2de4dd2879873501ff1f0c8cae626a90c128f3b698da0a3c831df144dd0b1c4ce05b693144e7e51b3909f8ff1060741553830d4699b7c5d466e019e28827ea1ee61002df4a8ba13a2fdfe04cc0ff8702a3ab981a6230cabc2da6703cdfa18e78a2eebd0e25f0adb4a8d2f90dfa3701ffaf0246573135d46094795b4ce1786d558e78a2ee195711f8565a48df18e9339880ff5703e350478c5506a3cc0f0546b1ad059e6a473c51f7baab097c2b2da4affb1afd9b80ffd700a3ab98aa361865de1653ab81a7c6114fd43dfa1a02df4a8b513a2fdff048c0ff4701a3ab98aa311865de1653ab806794239ea8670ba3087c2b2d64ec03f9265f02fe8fe365bb8aa95106a3ccdb626a05f0d43ae25966f02cb36871a47c2b2de4db2fcbf56f02fe3f1e185dc554adc128f3b6985a063ce31df1443dcb194fe05b69217d3bdfd2bf09f8ff0460741553e30d4699b7c5148ebf3cc1114fd433a80959f01df53c251bbea39e0d64c377d47dee6cf88eba679b0ddf51f71fb3e13bea5e5a367c47dd17ca86efa87b1cd9f01d75bd9e0ddf51d79ed9f01d751d950ddf51d704d9f01d757e9b0ddf51e76ad9f01d75dee1db73df9ec7edfb489e3be46b7b7e248fa147f258e2af0dfcb541b67cfb6389bf36c896ef7cbd36f0ed79f6db73b9fe2a08a2afc75639f2bdc2f02df3f89c658523dfcb0cdf328fcf0c9639f2bdd4f02df378ff7ba923dfc5866f995f9a05dfad0ddfadb3e8bb8de1bb8dc5b783ed5d9608ea5f7f0b034e9590c71878cb81168eea59aad6bb5cafebeb18d76bbb6f63ee2fc5506639e8e7baed90759b6d472e32635c14c4e7bb34013e649c3b6593e7c76f804ddafdd7c126fd025e039b1c9b5e059b3c937a056cf2ccea65b08dd2f94fc026cf8eb1cfbe3cffdf05b62a9dc7bee243757e07d8a42f15f65196fe70dbc1267d1ab16facf44bdd0a36e95b8c7d32a57ff866b0491f7fec0b28ef696c049bbc6b837dd0f6ebfc7ab0c97735b1efd3173abf166c5feafc1ab03daef3abc1f688cedf05b63fe8fc57607b58e79782edf73aff16d8a6ebfc72b0fd4ee75f02db6f75fe45b04dd3f917c0f690cee3bb6cbfd1f90fc03655e7f11daa5febfc1eb03da8f3f8eeceaf74fe3db0fd52e79f07db149d7f0e6c93757e31d87ea1f38bc03649e71782ede73abf006c13757e3ed87ea6f3f3c0f6539d9f0bb6713a3f076c3fd1f9d9601babf3b3c03646e76782edc73a3f036cf7ebfc1fc1f6239d5f06b6663abf026c322622f65391ef7cae029b8cf58dfd8f64fc8309603b4ae7c783ad95ced7824dbe0d370a6c32be700dd8123a5f0db6229daf029b9c9f0d059b8c0f33046c722e35186cc7e9fc20b0c979cf40b0c9788d03c026df20ed03361987bc026c32f6406fb09dacf34bc02663b2ed079b7c27ee20d864ece32fc026df87fe126c67e8fce36093716a1e01db593aff07b09dadf30f834dbe29fa7bb095e8fc74b0b5d5f9df81ed5c9dff2dd8644cb3696093efd03d0436193bf8376093ef3d4f055b3b9dff35d82ed2f907c12663bffc0a6c32fee52fc1d65ee7a7804dbe7b3d196c1d74fe176093f1382681ad93ceff1c6c32eec244b075d6f99f81ad4ce77f0ab62e3a3f0e6ce53aff13b075d5f9b160eba6f363c0d65de77f0cb61e3a7f3fd87aeabcb4336a7f56fbf9013d5f19c4775ea6fc7d14d49fd25d1b0803f2c479ae5d0c3ce86b5fec752f4b9ed74b5bd04caf5762681ff8de1bbbefd435c5877a5d857abd7b0ddf8550a654370e6a3939e637d7cbed3796c3fb58b26e59a613d83f30d6dd5ad7f74347f5dd6b300937ea2065ca35933a36fe42e71dbdc39fbc3e96580b40439c2a212f0c6eb42a2bc573e186f07c083cfb62e7495dafbb8809dcb7e2be5e37efe39ab1560c65f6827e1f38d00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ae780cee3b36629778084516cfb80c7c57d7e7c0e2beb57cf753e3ea7ceefbed8fdd67fbed742afb7d4a873219469595257f65b9a0dc71e95ed16b52d1d3c274cbb2dc55f11d4079f051d70c4b3cfe0d967d142f225b1f92e1bee46e3b252d597453d63df6fe87ac0a2a9abfd759f5e5781a129eeaf1f193cf86cb408783fd6bf0958cfc7500707fb78dab8107fb82fed039be43f024617db198f25d21ec8f3707c362d65be309e8bc7bfedcb4a5db61bef439d2a8343e3bb10cafc199eb7ff55e7b16fc801d0ed7f5bfe2f53bae7d4a29faaf3eef8eb9cdcbeef016725f841dfef026b4cbeebbd4353a093f8117b21e4ff17f4e79072a287682dec6a1f913e9dc86e2ef791b15c3194d963a97f65106ffd771b3cbb0d66b54dfe0171f6bfe1f8efaa4dda13a15127d048caec038df63be2d967f00887f8536564fbb734cac8b28550e6bfa18d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf81870721defbed87973abff57eb92d42fb6eb71f5ff9275b7d6cb0a4760acbf14d62f5c2d83e8638b9439a1a46efd2efb97ed37ea2c2ca8b39439a524f5abe2ec269dcfe45cff485db7459debef71c09308ea5f7bab29ddf11d8f31ef3be07154cf52dbb1eb03a34ec550a61dd4d3c1794cda778177836f17db1cb59073a8bd86168550e6e292d4afb41d513ae2b5ea8759a94b99f57cb0d4521729d3a9a4ae2eadc01e2793cbedf62ed449ad779fa5ae52a6bca44e976e3a9f80ed84f74daeb4fc5fa674ed018ec5b333fe3a27b7ef0ee0ac043fe8fb1d608dc977bd6f81c8f9bef8117b21e4af28a92b2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3cb52ffca20defaef3478761acc6a9bf42ca9cb4b1cb96c37774568540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452e6f692d4af6a671396b2e6bd6117f731f1ddd200ea111875950963c0c1b561395e3b493b257e3a827d9fce8bce1d0ded0aa1ccbd25a95f87e7ddd67b97e6f51d5e5308b7b96fe1bb1f552575dc2aee653bedd3bf4560fb54ff3aba4e2bb7dd33140edb3dc3512575ecb8ac707d62a98b798ddc2c38f49efad74659bcef966e39f4a5a683c6324adf4f2d4cfb0c3fad60d9d8ded5e85c5a1ac57f10f83e32986dbaca7e8031b74fe7cd7d05af8da5ccd492d4afb4496659b5edffebc43a7d643b8a76d89e604c7e048c953a5ffacda6e43e77d0a8bfcc8b3fc528f77b0e024ffc6d57ea7da54cee03ef071e176dbba336ba148fb1ad625b6fcf2adbf1ff2343ab2c3eafb51ef3cd67eead8c7c3cbecbaa6df79f6c5aecb5f0b87a8e12a5c55e8beff8b4e836dcd6ced9b4c866df87282d3eb0f88e518b1abcef994e8bf72d3c2eee45a5d3e27d8beff8b4e85e9aeeb9066ab1c7c2e3eade439416e22f53e60f08985b19f9787c9757d9ee93d9b4d86de17175dd1ca5c56e8beff8b4e8dc0defd1a5d3e23d0b4ffcf7e7d26bf19ec5777c5af4e889f7f0d269f1ae85c7d533dd282ddeb5f88e312e46d8eee5d8b4d865e1d995652d76597cc7787ed8cd76afcda6c54e0b8f83fbae69b5d869f11da316c3f0be6b3a2d7658787664598b1d16dff16951d5d5764fd8a6c53b161e57f784a3b478c7e23b3e2d86f550beb737408bed169eed59d662bbc5778cd750c9b8d8d6002db65978b665598b6d16dff169519d3cd7dada002db65a78b666598bad16dff169519a3ca66e6980165b2c3c5bb2acc5168bef18e322793db9b9015a6cb6f06cceb2169b2dbe633c8e24e3625303b4d864e1d994652d36597cc7a7454df2fed3c60668b1d1c2b331cb5a6cb4f88ef19e4b322e3634408b0d169e0d59d66283c5777c5a74491e53d737408bf5169ef559d662bdc5777c5a8c483e135bd7002dd65978d665598b7516df319e7726db8bb50dd062ad85676d96b5586bf11de37967f2fec59a0668b1c6c2b326cb5aacb1f88eb1ed4c9e77ae6e8016ab2d3cabb3acc56a8bef18cf3b935abcdd002ddeb6f0bc9d652ddeb6f88ef1bc33791c59d5002d5659785c8d8112a5c52a8bef18e322d976ae6c80162b2d3c2bb3acc54a8bef18ef6b25dbce150dd0628585c7d5780d515aacb0f88ef17a24798f6f7903b4586ee1599e652d965b7cc7f8ac28790ebeac015a2cb3f02ccbb216cbc0f7fed87da7fa738b0fe98bd5c1d0a210ca5cd836f52b7db1a274947560bf32accb5bb1d725d5af6c69445dde82ba48994ba12ead02276314953baa6b326696409dd47a3fb6d455ca746e5ba74b179d4fc036f90474bbccf27f990a8cf94ac88b7eaace6fc45fe764acbe0e9c95e0077dbf06ac31f9ee8cbe0b74123f622f847cffb67565a59ce8215a0bbbda47ded4796437975b662c570c65deb4d4bf3288b7fe6f183c6f18ccc9f71e20ce248edcb45d29a6372334ea001a4919ecb3f7b1231eb30fa170883f5546b67f4ba38c2c5b0865ae83360afb954a3d13c1a1fd261db5659d915dd62df3e2af186cfb81d1aca38a8f2fa1efa78c1521e348289b8c0bd105d6d3ddb0a9baf6705457f125eb96f91ec028e35474cf3e63594319bb198c8aa79703cd70ec0d99d21d2f7a014f4f073c8eea993c0ef536ead4c3a8533194c1771b7b3ba86701f89575cb7c6ff0ed629ba316724cbed8d0a210ca8c32ce1fa3749475a8f8ed6ea94b5fc77591754bbbd4370bbe2b0cdf5d0ddf89a0fe760e82f4fb570530f771c0acd6db2ffef596e2799bc494f8e90a75ea0f1ac455275c979ce7f537b42d84fca3709e27e5a4ac1cbf845dc5b26c4b643797eb652c570c65fa5aea5f19c45bff7e064f3f83596d9389706ee7607f48c6405f8343e6bb8276fd22b4eb0bda49193cfe7577a45d1f83a78fe15bf1c8394e6fb0c9b982f027e0ff5db2c06db67bbd2ddc62c371e26ce73adde2674c7baed30d18c5d607782a1c69666eeb8b0d7df0b8dcd22823cb164299e7e0d898b09455fb5dbb82ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6382bab11a274dae9d386ce488db46a41e3d0a5aa18189bf05966a34031be69b5b6c41507f48ca42b0c990942dc0d6cc900587c294f232a49d0bb9500f5977a1c1d90a58e2f48dc379ca942e748e021e17a1ac424786f4d4a173d7c4d19347607cb430381b133bea7fcdd3948b5a97abed60ee1395306fc660a123ffcda1be95302ffed4b629d6f9f1c3863fd07fe2c82963478c9b3c098532776ccc1704f53780f91b25b8ab9d0e03002b8c8d430ba35ed860c8ff64c31c133f67398e996b6a13803f998e01dd8e76a09b5abf8c7d3b7cd89831b74ca91a337af85553c60d9f3cba761c6ecd568672515b5afedf126cb6261ecbaa099b2d5cf6288bcd36e128c3adc02647aea3c1263cc780ad39e4a5bcb9659c846b3b58bfec52ea7f4a9c16bae247057521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e3d480d1dac860a3e2b480d05acbe765112a486f63d37480ddd7b7e901a9af742e0fb36305f14a44ebbd4d0baed83d4d0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a49fd6ba7f982e0bd3e561ba224c5786e9aa305d1da66bc2746d98ae0bd3f561ba214c3786e9a630dd1ca65bc2746b986e0bd3ed61ba23480def7c67901a7e5d0dff7c77901a1afa9e20356cf4bd416a48e9fb82d470d3c382d450d4c383d430d52382d410d62383d4f0d6a383d4d0b90f04a9a176c706a9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f2f420350cb31ab2f9d1303d16a486747e224c4f86e9a9303d1da667c2f46c901a1e5c0d1b3e2b480d33ae861f9f1ba4862b9f1fa4863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f394caf84e9d520f548423d8a518f28d4ed7ff5184cdda27e2b48dd3a5f1ea41e71ab47feaa0b84ea12a2bac8ac09525da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aaf705a9dbe20782d4a352753b5c3d1a50b7ccd5edfbcfc2f4ad201593df09d377c3f4bd307d3f4c3f08d30f83d410c66ab863355cb21a5a590db9ac8667564339aba1a0d510d1bf0e52434faba1ab7f17a486bffe43983e0f5243707f19a4865fff5398be0ad39fc3f49730fd354c7f0bd3dfc3f48f30fd4b98fe354cff16a67f0fd33f83ba61b6b121395db73efa0a26183679f288b1e327974cae2d193b65cce4d1e3c74c2b993a7af2a892da07474cac19533b1517feb65e58c608ef3f71e2b06925a3c7558f78a8a476cae492da9a92aada29e3aaeb1dc4ffaa173af3508fc3aaaba39dfdc73721fdbf8d747ab46e1765f4f56bd3d7ada879230439be310b756bdeb80a4dd74730b9d4bd3d751e5c32694cede492d29271e1dff0c05b3b754475c712fcdfa450e449934b264d1e36717249cdc4dab1259d3be27a671cd3884a1424dcc07438bd71e274d2df596a54887d7e4e2314f8fa9cc6911e5bf20d488f2f699cd38b4a1a51c38e8d59e8b646120e2e899465d294aac913870d9f1cbdf0b06fb2f0c8c654f3c14656f382b68d70d6be310b5ddbb67184231be36c7106ce82ff0f4e77936acc560600", -======= - "bytecode": "0x1f8b08000000000000ffed9d779815c5b6f67b604064cf8898b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020a227e7e4497a3c9e74ef3de73cf78ffbddfb05bfdbb577ad3bef14d5c3ecb16bf3eed9d5cf53b3abd754f7fad5dbabab53755741909efe19a6029d6f19a6b3820327f97f52ff967eb3a94b8ceb2a75c95990239c2d7284b3658e7016e60867ab1ce16c9d239c87e508679b1ce13c3c464ec5d622a83fc5cddbd681ae713326724cd3a21cd0b438c7343d2207346d17e4461b75648e70b6cf11cea37284f3e81ce13c2647388fcd11cee37284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce12cc911ce0e39c279468e709e99239c67e508e7d939c2794e8c9c9d80b3a3fe3d57ff9ea77fcfd7bf52f602fd7ba1feedaceb58a8e72f525c61520f69ca8cff750d537998ba85a9bbf1bf1e61ea19a65e61eaadff57a2ff5711a6ca30f50953df30f5d31af40fd3c561ba244c9786e9b2305d1ea62bc2746598ae0ad3d561ba264cd786694098ae0bd3f561ba214c3786e9a630dd1ca65bc234304cb786e9b6300d0ad3ed611a6cb0dc11a62161ba334c43c37457988685697898aac234224cd5611a19a69a30dd1da651611a1da67bc2746f98c684696c98c685a9364ce3c334214c13c334294c93c334254cf785696a98ee0fd303617ad0d0eca1303d1ca647c2f4a8c1392d4c8f85e9f1303d11a627c3f454989e0ed333617a364cd3c334234c33c3342b4cb3c334274c73c3342f4cf3c3b4204ccf85e9f930bd10a617c3f452985e0ed32b617a354caf85e9f530bd11a637c3f49666911d616198de0ed3a2302d0ed392302d0dd33b617a374ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2f45e983687694b98b686e9fd306d0bd3f630ed08d30761da19a65d61fa304cbbc3b4274c7bc3f45198f685e9e330ed0fd32761fa344cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf73363995f87e93786edb761fa9d61fb7d983ed7f92ff4ef1ff4ef97faf78ffaf72bfdfb27fdfb67fdfb17fdfb57fdfb37fdfb2ffaf75ff5efbfe9dfbfebdf7fe8df7f8669538774be4d5037258398daa8f29ad4b31f11bf63507f525ab4d4ff93df126d2fd4f3f22bdab5d2f3ad0c7b6b3ddfda584f1b3ddfc6b0b7d7f3ed0dfbd17afe68c37eac9e3fd6b01fafe78f37ec67e9f9b3c09e08e0deb0b62b5b4b6d2a009bc46b0bb0b5d2b696606b2dab03db61dad60a6cb27d5b83ed706d3b0c6c6db5ad0dd812da76b86819a6226d4b0671c54ae970b5dee2b8d7ab9f971d113fef08b5de768e788f8c9f77a45a6f7b07bc2a3e8ed2eb3a12e2e6686d6b0fb663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056ca76bdba9602bd1b6d3c0a69bdce074b09da16d25603b53db3a80ed2c6d3b036c676bdb99603b47dbce029bb4bf67834dce17cfd136d5761c5e00cb68bbb45ba965a4cd06db79d25e83ed7c69abc1d649da69b05d00bec57621b43562ebac6dd26ea9fff5d6f96410d77e5256a3d65b11f77ac335abf5f6897fbda9678e7d833aad93e0a702b4eaa7f331f66bea82be0b74123f622f84fcd55056ca891e72ec1176758ca9d4f97e0d2cd7db58ae18ca545aea9f0ce2ad7f1f83a78fc1dc0af26e62b66b571fb38d9e328ed94150d68c3d390f6a8e313b00381cc46c0f1fb38d9e328ed91a286bc69e9c0b37c798bd03381cc46c959b982d2bf5319bbe6f1604f6d893eba1e618b3a38123fe98ede663b6f153c631fb049435634fae899b63cc4e058ef863b647953f3768f49471ccce87b266ecc9fd99e618b34f03878398adf1ed6ca3a78c63f62d286bc69edc2b6c8e31fb3c70c41fb3bd1cc56c571fb341fa196810d8634fee5b37c7985d041cf1c7ec087f7fb6f153c631bb1dca9ab127cf509a63ccaed379f59ce127fa39c32960fba9b69d0abcf1c776753747b15de6633bdd372408ec312acff39a636c7fa8f32a8e7f01fd11c4f64b6deb00b65f69db1960fb4cdbce847a39d807aafc3ed0e829e37de03750d68c6579b6dc1cf7811f01878398adf631dbe829e398fd1b9435634ffa3934c798fd3d703888d91a1fb38d9e328ed9ff84b266ec9dabf3cd3166a5afa93a5ff8429f2f9c0fb63f685b27b07da96d1780ed8fda7621d8bed2b6ce60fb93b65d04b63f6b5b29d8fea26d5dc0f6576d2b03dbdfb4ad2bd8fe45dbcac1f6afdad60d6cffa66dddc1f6776deb01b67f685b4fb0fd53db7a699b7ade257dafe4bcb50df0278378b7adf4bb9475cb7c972cf86e67f86e9745dfed0ddfed2dbecb1cf84e800f990a8cf924e4cbdcf29416030ffa2a8fdf575755f7ae41e3eb5e0e3cdd1cd43d013e1ac3d30d78bac7cf93eaffdb23fef5a6b6715743d304f8ea0af5eae9a05e05e04bd62df3e2af186cd8b6f6b430f68a9fb1ac007cc9ba65be17308a0ddb7a79e74af61f753cec5850c7eb605f4a9d13893ff96e997094835dca5cd5a18ead93662b82ffe371afbb61731497a9b8105fb26e99177f45509feed9672c6b2c633783d1551b5100be64ddde77dd76903c1ec71d5ceb58db34f15d9105dfbd0cdfe5866f6c3b656ae8d8d60b9863bfe6d4c7b6caf8d75b8ad727726d287ef0fc01afe1e2aa13fa966b43f123f642c85f57505756ca891ed20e0bbb8a65d996c86e2ed7d358ae18ca5458ea9f0ce2ad7fa5c1536930ab6d72091c0b1dec0fa918a8303864be1cb4ab8cd0ae02b49332e78276aedab3de068fcc77071e69c77a008fab6ba2289e6c5c8f1dcc379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6572f60b49dab38b89e69f05ca51b308aad37f07475a459d476ed4ae2db41aca4da23f121e7e6b2ff7607bb94e9a55fa8536de53dd056ba88118c47991a7bcd1bff762a4b5d8377cb8007b79d83ebaa2e8ee2b114efdf7c1dc41b6b66bbd4cdd02aea1e8fabb6bcabc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae3b09a3d9ffcdd57dfed4f70ff5ba64fdeab9ceff71da1facac14fbc7483f88f38d3a174299e2167565ff3ff407339f53611fc9ee6eb54b6d4bec8f998479f1877dad705b32f4772a89cd77d90857cfdbd437c0d47734cdbe9fdd2d9abae8ff8c9a16189a627ffc0b0c1e15a7952debd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd22a8df7ee071c655ff1d69abe5797985e1bb10ca9cdca26edb48df2a1963b8abb11cf6fb9175cb32e783bdd258773bbdac70b432d6df03969532a7419bbaa7459d660edacab24cfbaee373f3f88fc3e9e7f85d33e0e9023c2eda1947e71ba5b80fc4fd1cdfec9f663b8f9132d8b7cf41bfca06fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43ea79867cab4cd69ffa5e708b3abfae9fc3c933a74e469df1ddd17fb6a82bbb49e78b8203fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77fa39be8bb121e4397e5743d7728ba6aef6577cc68a9ae2fedacde0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b65de06adb9795ba6c37f0bb29c9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb0baeab40a7fe86068590ffbc455d59292765456b6157fb887c0306d9cde5ba19cb154399be96fa278378eb6f7e6bb59fc1acb6c9cf20cebe80e3bfab36a96f8446e7834652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3cf3bd9fd67f417b11773fadff8218c27e5a81b1fe4eb07ee16a1d441f5ba4ccff33d66f9e93cb32d80fec7ff613f89e4b99ce67724e7ea8aeaf6ce7e4b85c54dd15337e072d192333c604b2e079829469abb5966d5619c1ddcbb26c71c4b2a295f9adb0a2e040fddc7c672dbdcff733ea22718ddf20973247435ddc9cb7a4cf015d7d532e097552f9324b5da5cc09b0af9da4f309d84eb8df9e67f9bf4c0d9d03e218ee17c75fe7d4f6bd043893e0077d5f0aac31f9ee82bee51c50fc88bd10f2e7b6ac2b2be5440fd15ad8d53e22e751c86e2e57612c570c65fa5bea9f0ce2adffc506cfc506b3da26a7429c9d07fdd05db5d5fd2334ea041a4919bca768fb0ea8ed5e87abf737a2cea5f0fd25f3fc0a8f936ece9bece7b1e67d35db394227831fcf117a403b9bb09435ef17caf132ce7ec3f8ae440ff08bef4ab8fa76736fd02d09f3785e70287dbbf88eadf217356642ef2cf88e1a33211bbedb1bbedb67d1b7d7dc6bcea4b983310852ef9fe1374bd5d4d079298e4b20cbb500461763392482fadf1e3f18238eef20cbb5044617c7874cbf7dde031865b9426074f16e298ebfd11846fcc6301ee785d1c1b762bb34f55bb1784faf353032bdb389cfa60e034617e7c54d7d570fcfe7dbc0afab7189ba66c058068cb2dce1c0e8e2de385ecb348611af8b64b9b6c0e8e21956a6e33be1b7e7f1deb24bc6868eed8efba294657aefa5d22d4f83e71ae8dbc1b886292df03ee3c1b4e8e396a7c1731ff4ede0be5f4a0b1c67f0605ae0b34117e31e2682facfe10ec683cf2f65b9a38031e988b15f068c4960fc9f7bc5c0d8df11633203c6fec028f66380d1c1fdd71463ff0c18f13ea52c772c305ee288f1e20c182f014659ee386074712f35017e1bc3782930ca72c703e3658e182fcd80f1326094e54e00c6cb1d315e9601e3e5c028cb9d088c573862bc3c03c62b8051963b0918af74c47845068c5702a32c7732305ee588f1ca0c18af024659ee1460bcda11e35519305e0d8cb2dca9c0788d23c6ab3360bc061865b9d380f15a478cd764c0782d30ca72a703e300478cd766c038001865b91260bcce11e3800c18af034659ae03305eef88f1ba0c18af074659ee0c60bcc111e3f51930de008cb2dc99c078a323c61b3260bc111865b9b380f126478c3766c0781330ca726703e3cd8e186fca80f1666094e5ce01c65b1c31de9c01e32dc078b38571a023c65b32601c088cb2dc05c0786bfc8ca96be9811930de0a3cb7c5cf93d2ecd60c786e73cb93faaedead165fb7c7ef2bb52d06058daffbedc033387e9ed4b6b83d031e612886e550b33be2674c69363803c63b806748fc3c29cdeec880670868768745b33be3674c69362403c63b816768fc3c29cdeecc8067286876a745b3bbe2674c69363403c6bb806758fc3c29cdeeca80675850a7d95d16cd86c7cf98d26c58068cc381a72a7e9e9466c333e0a902cd865b341b113f634ab3aa0c1847004f75fc3c29cd4664c0530d9a8db06836327ec69466d519308e049e9af879529a8dcc80a706341b69d1eceef819539ad564c07837f08c8a9f27a5d9dd19f08c02cdeeb668363a7ec69466a332601c0d3cf7c4cf93d26c74063cf78066a32d9addeb88f19e0c18efb5f0c4fd9dec7b2cbec63aaafb98a0f175178662580efb498c73c4383603c671c028cb613f895a478ce33260ac0546592ee198b1a17e12b5e07b7cfcbe53ed526dd0787dc6bbe569b09f04fa9ee0488bf141e3b598e096a7c17e12e87ba2232d26048dd76222f04c72a045027c348647188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc47d8e18a764c0781f30ca72d84f62aa23c6fb32609c0a8cb21cf693b8df11e3d40c18ef0746590efb493ce088f1fe0c181f0046590efb493ce888f1810c181f0446590efb493ce488f1c10c181f0246590efb493cec88f1a10c181f0646590efb493ce288f1e10c181f0146590efb493cea88f1910c181f0546590efb494c73c4f868068cd3805196c37e128f39629c9601e363c028cb613f89c71d313e9601e3e3c028cbddeb98b1a1eb97c79bb9efa86b95e6ee3beabaa4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df4f38f09d001f321518f349c80b43312c77af676cd68cc853121f4f29d61d7d3d4950f7272d3c058eea8ebe9e22a8bb30e41ae31339c0786f0e307a1dd37d109bc2a8789e76c4f354063c4f03cf338e789ece80e719e079367e9e544c3d93018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193da3673c148cb9d0867bc69c88c7b2a6322a9ee9f1f3a4347b36039ee9a0992c779b5bc6b2a6322a9e19f1f3a4349b9e01cf0cd06cba4533078c654d65543c33e3e749693623039e99a0d90c8b660e18cb9acaa87866c5cf93d26c66063cb340b39916cd1c3096359551f1cc8e9f27a5d9ac0c78668366b32c9a39602c6b2aa3e299133f4f4ab3d919f0cc01cd665b3473c058d65446c533377e9e94667332e0990b9acdb168e680b1aca98c8a675efc3c29cde666c0330f349b6bd1cc016359531915cffcf879529acdcb80673e6836cfa2192be3bd39c0f8440e303ad6b1aca98c8a6781239ef919f02c009ee71cf12cc880e739e0793e7e9e544c3d97018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193d63668c4fe600a3dfd69e9195d1c1f55583efd03cd7cc7d47bd43d3dc7d47bd43d3dc7dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993ef17e2f75d96e937665e001e17dfbc7154cf52b5de17f5babe8e513fa5d54b8656cf195a1543991741bf971ce857007e65dd322ffe3265ee48c0ecc877d911e13a0e87fa8b8f270c3d94ff971dd53daaad7fb999fb8e6aeb9bbbefa8b6beb9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f18df95641dd79bb7cff54ade3159d2fd4f352fe49b04b994987a57fdb057e1f72e1dbef43fe58910fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671ce17e7180f9559e0090c9ea0019ef9643c53c8786691f18c22e31942c6733d19cf25643c0f93f19493f18c27e31941c6732b19cfd5643c1791f1f425e3994ac6d38b8c673619cf3d643ccf90f10c25e3b9918ce732329e47c978cac8782692f18c24e3b99d8ce75a329e2419cf03643c3dc878ce23e3194bc633878ce75c329e61643ccf92f1dc4cc67304194f3b329e2bc8789e22e3b9908ca7828ce731329e79643c93c978ee26e3b9838ca7948ce73a329ece643c1793f13c44c6d38d8c672e194f2d19cf74329e2a329e81643ce793f15c45c6d3928ca70f19cf02329efbc8787a93f18c26e3e944c6732719cf0d643c9792f13c42c6d3958c670219cf0c329e6a329e41643cd790f1f423e3b99f8ca72719cf18329e8e643c7791f1dc44c6938def9966c25344c6534cc6733919cfe3643cd3c878ba90f14c22e39949c65343c633988c6700194f7f329e07c978ba93f18c23e3194ec6730b19cfd3643c4792f1b427e3b9928ca7808027111c38864902feff02d85a18cbaacfbeceee50f7ff57b5bd052cf39aceb7b4acfb55b0c9b7645fb32c8b3abd0a7549ea7ce9379b523aa1af24cc8bbf22e0788d84e74a329ef6643c4792f13c4dc6730b19cf70329e71643cddc9781e24e3e94fc633808c6730194f0d19cf4c329e49643c5dc878a691f13c4ec67339194f31194f1119cf0b643c3791f1dc45c6d3918c670c194f4f329efbc978fa91f15c43c633888ca79a8c670619cf04329eae643c8f90f15c4ac6730319cf9d643c9dc8784693f1f426e3b98f8c6701194f1f329e96643c5791f19c4fc633908ca78a8c673a194f2d19cf5c329e6e643c0f91f15c4cc6d3998ce73a329e52329e3bc878ee26e3994cc6338f8ce731329e0a329e0bc9789e22e3b9828ca71d19cf11643c3793f13c4bc6338c8ce75c329e39643c63c978ce23e3e941c6f300194f928ce75a329edbc9784692f14c24e32923e379948ce732329e1bc9788692f13c43c6730f19cf6c329e5e643c53c978fa92f15c44c6733519cfad643c23c878c693f19493f13c4cc6730919cff5643c43c8784691f1cc22e39942c6339f8ca7d2c2f382231e79df5dd62df32f90f876b01d4ad57a5f7754a737f4ba5ae9f50abff82b8432d3daa67fd5f30f5c56b8ccef13e0bb396f80466f38aa8b6c8f0263fba0ef571cf936c7e793f9579ab9ef7686ef7679e2bbbde1bb7d9ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2ede0daa00cbf93265381319f843c5e2fb8f8be9ca37ad6bb4efc3a46fd94566f1a5a99d756c550e675d0ef4d07fad9ae3d655efc65cadc918019e3a22488372ede8abf4e65aadfe1e1a0eb5b86be58af858e348d3a862c6ce6bea38e21cddd77d431a4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fdb6cec778dd588a3ed4f345b91e781bfc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732ff1b9e6bfa7ddeeff371f9f6c7361fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe99e3dccc4b7ff17381cd557ffea858ccc6bb0487d277542c3677df51b1d8dc7dfb38f771cee47b8903df09f02153437dfc9600cf22073c8eea997ab6b1d4a8d30b469d8aa10c1ee3973aa86701f89575cbfc52e091a912785cc44163b639f2cc27e39942c6338b8c671419cf10329eebc9782e21e379988ca79c8c673c19cf08329e5bc978ae26e3b9888ca72f19cf54329e5e643cb3c978ee21e379868c672819cf8d643c9791f13c4ac65346c633918c672419cfed643cd792f124c9781e20e3e941c6731e19cf58329e39643cc3c8789e25e3b9998ce708329e76643c5790f13c45c67321194f0519cf63643cf3c8782693f1dc4dc67307194f2919cf42329eebc8783a93f15c4cc6f310194f37329eb9643cb5643cd3c978aac8780692f19c4fc67315194f4b329e3e643c0bc878ee23e3e94dc6339a8ca71319cf9d643c3790f15c4ac6f308194f57329e09643c33c878aac9780691f1bc49c6730d194f3f329efbc9787a92f18c21e3e948c6731719cf4d643c45643cc5643c9793f13c4ec6338d8ca70b19cf24329e99643c35643c83c9780690f1f427e379908ca73b19cf38329ee1643cb790f13c4dc67324194f7b329e2bc9780a087812c181effe27e0ff6f824dde517f016cefe8fc22b0b5b0f868a9f34bc156a8f3b28ec3c2f4728703d78d3ab97a2f1f7d25615efc1501c73b243c5792f1b427e339928ce769329e5bc8788693f18c23e3e94ec6f320194f7f329e01643c83c9786ac8786692f14c22e3e942c6338d8ce771329ecbc9788ac9788ac8786e22e3b98b8ca72319cf18329e9e643cf793f1f423e3b9868ce74d329e41643cd5643c33c8782690f17425e379848ce752329e1bc878ee24e3e944c6339a8ca73719cf7d643c0bc878fa90f1b424e3b98a8ce77c329e81643c55643cd3c9786ac978e692f17423e379888ce762329ece643cd791f12c24e32925e3b9838ce76e329ec9643cf3c8781e23e3a920e3b9908ce729329e2bc878da91f11c41c6733319cfb3643cc3c878e690f18c25e3398f8ca70719cf03643c49329e6bc9786e27e31949c633918ca78c8ce751329ecbc8786e24e3194ac6f30c19cf3d643cb3c9787a91f14c25e3e94bc6731119cfd5643cb792f18c20e3194fc6534ec6f33019cf25643cd793f10c21e31945c6338b8c670a19cf7c329ecaecf094a977dba5af75005c382521bf1478163ad0c7513d4bf1bb065fc7b85ea5d5bb86566f1a5a15439925a0dfbb0ef42b00bfb26e99177fb9c8ac781ed779db77201e276114db42b73ca9fdf6f1a0fed4d07efb2ef0b868d71cd533b57f2d33eaf4b845772983b1bacc413d6dfb8ecc2f83ed906bcc8ae7299d17d604947b8a84516c4bddf2a4f6afa782fa5343fbd732e071d1fe38aa676aff5a6ed4e9298bee52066375b9837adaf61d995f0edb21d79815cfd33a2fac0928f73409a3d8de75cb539e803acbd4d0feb51c785cb43f8eea99dabf5618757adaa2bb94c1585de1a09eb67d47e657c076f0cc9ed9c6ac78e4d98eb026a0dc33248c625be694a7bc34017596a9a1766c05f0b868e71de99e6ac7561a757ac6a2bb94c1585de9a09eb67d47e6575a7c9704f16ab1aa115aacb2f0accab216e22f53e62539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9ebac26afb3d7d9ebec758e83d9ebec758e62f63a7b9da3981974563cf2ed4a614d40b9674918c5b6dc2d4feabda06783fa5381319f84fc2ae059e1401f47f54cf5215f6dd4e9598bee5206f7afd50eea69db77647e356c874c9857e620b3d7b969cc8a67bace0b6b02ca4d276114db0ab73ca9766c7a507f6aa81d5b0d3c2eda7947f54cb5636b8c3a4db7e82e6570ff5ae3a09eb67d47e6d7c076f0cc9ed9c6ac7866e8bcb026a0dc0c1246b1ad72ca53967abf7146507f6aa81d5b033c2eda7947baa7dab1b5469d665874973218ab6b1dd4d3b6efc8fc5ad80e9930afcc4166afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9eb9c3f3a2b9e993a2fac0928379384516cab9df2744d3d779819d49f1a7aeeb01678d6c4ce937eeee040f7d4738775469d665a749732b87fad73504fdbbe23f3eb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a6796ce0b6b02cacd226114db1ab73ca9ef1ecc0aea4f0df5db59073c6b1de8e3a89ea97e3beb8d3acdb2e82e6570ff5aefa09eb67d47e6d7c376f0cc9ed9c6ac7866ebbcb026a0dc6c1246b1ad75cb936ac76607f5a786dab1f5c0e3a29d7754cf543bb6c1a8d36c8bee5206637583837adaf61d99df00dbc1337b661bb3e299a3f3c29a8072734818c5b6ce2d4faa1d9b13d49f1a6ac736008f8b76de513d53edd846a34e732cba4b198cd58d0eea69db77647e236c07cfec996dcc8a67aece0b6b02cacd256114db7ab73c6509a8b34c0db5631b81c7453befa89ea9766c9351a7b916dda50cc6ea2607f5b4ed3b32bf09b643ae312b9e793a2fac0928378f84516c1bdcf2a4f6af7941fda9a1fd6b13f0b8687f1cd533b57fbd67d4699e45772983b1fa9e837adaf61d997f0fb643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fdeb3de071d1fe38aa676affda6cd469be45772983b1bad9413d6dfb8ecc6f86ed906bcc8a6781ce0b6b02ca2d2061141b1e2f1638e22936788a2d5a1c2adf6abe42e78bf46f02fe5f018caedac30506a3cc638c23af6bcdda193ced0ccd0ea56f55ff4a9d3f42ffe2f6aa044686edd52e0b9ab53778da1b9a1d4adf4a8b3e3a7fa4fec5edd5071819b6577be071d03e97270c1e353574beb1d9b13e8eea993adfd812d875c7e39094c163f71607f5b49d4bc8fc16d80e9ed933db9815cf409d17d604941b48c22836bc4ed91a3f4f79c2e0515343edd856c7fa38aa67aa1d7b3fb0ebbe1574973218abef3ba86701f89575cbfcfbb01d32615e9983cc5ee7a6312b9e413a2fac0928378884516c5b80675bfc3ce50983474d0db563db1cebe3a89ea9766c7b60d77d1be82e6570ffdaeea09e05e057d62df3db613b64c2bc320799bdce4d63563c83755e5813506e3009a3d8de079e1db1f3a4c703421e3535d48eed70ac8f9b7aa6dbb10f02bbee3b40772983fbd7070eea59007e65dd32ff016c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6788ce0b6b02ca0d216114db76e0d9193b4ffab903f2a8a9a1e70e3b1debe3a69ee9e70ebb02bbee3b41772983b1bacb413d0bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886eabcb026a0dc501246b17d003c1fc6cf539e3078d4d4d073870f1debe3a89ea9e70ebb03bbee1f82ee52066375b7837a16805f59b7ccef86edb0db337b660bb3e219a6f3c29a8072c34818c5b60b78f6c4ce937e7e8a3c6a6aa81ddbe3581f37f54cb7637b03bbee7b40772983b1bad7413d0bc0afac5be6f7c276c88479650e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d87603cf47b1f3742d4d183c6a2a30e69390ffc8b13e6eea997eeeb02fb0ebfe11e82e6570ffdae7a09e05e057d62df3fb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8aa75ae7853501e5aa4918c5b617783e8e9fa73c61f0a8a9c0984f42fe63c7fa38aa67aadfcefec0aefbc7a0bb94c1fd6bbf837a16805f59b7ccef87ede0993db38d59f1d4e8bcb026a05c0d09a3d8f601cf27f1f394250c1e3535d48e7de2581f47f54cb5639f0676dd3f01dda50cc6eaa70eea59007e65dd32ff296c875c63563ca3745e5813506e1409a3d8f6038f83b84bf1141b3c32ff09816f355fabf345fa17b7572d30326cafe22c68d6cee069676876287dabfa8fd7f923f42f6eaff1c0c8b0bdda6541b3f6064f7b43b343e95b693141e78fd4bfb8bd260023c3f66a9f05cd0e657b7828f7ed4319a75ef343a779c121d4bce0106a5ee035a7d2dcc1f1a50c8f650130e09484fca7c0f3edf87952f7e53ecd80e7dbc0f3adf879ba38aa67a95aef77803daef52aadbe6b68f5a9a15531944186ef3ad0af00fccaba655efc7966cf1cc58ce7b6c29a80729f90308aed5bc0e3a2dd5075bf50af4bd6df2a4c9f1d53e7d7c5f312bc57dc4aaf5738c45f219499505257f6779aad08fe2fdb4dd5679f6173f40e7317db733b99177f4541d6eedd36782f19b570f1bc29d3e3fe3e0bcfd7f1f194e27e8ebef63aaa7b26cffef65a7862ac7b97a8e79e7be2af7baafde8acd725eb57fbe8bf1fe354f372dcf7a4fde86cd4b910ca0c28a92bfb1fd07ed8da0ad7fba69c939bfb668ba0ae3d13ae126d379f097daded52ee63288f6d4e85fec5fdb302eaeaaa5d8cbac784eda2d976bbd4de7c2e69fa2e065d3e26d5ccf69c0275acb470571270633c66733f9375db9e91551a3ab26986dbfa638b8e7d2cdc7d08b819f7eb3e868e6c9a1d6cbf1e68e11e48c0cdb85f0f347464d3ec60fbf5200bf720026ec6fd7a90a1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf8705f57564d3ec60fb759585bb8a809b71bfae327464d3ec60fb75b585bb9a809b71bfae367464d3ec60fb758d85bb86809b71bfae317464d3ec60fbf5280bf728026ec6fdbab1fdf659f7eb5a0b772d0137e37e5d6be8c8a6d9c1f6ebf116eef104dc8cfbf578434736cd0eb65f4fb0704f20e066dcaf27183ab26966dbaf1dbd4b98f1bb8dfb9dea931e637a7f063c1f018f8b98721407a58efab9a4faa6ee31b4da6f68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4918c586cfa45cdce75775bf48af4bd6df2a4c038eabf3bb3776bf65a50586bf247088bf422873d2e975656fd46c45c181db0dc7e2c66db93bf63aa4b7a519ff322ffe8aa03e7b80c7c1fbf9299ebd06cf5e8b16f8de693cbecb46b8d1b8ac547d1feff0a06e3bef36ea839a7e18bbfffa9a16189a7ee8d87722a8bf3d8501a724e491c7c5b36147f54cb505bb8c3a991a1743998e50cf5d0eea59007e65dd32bf0b78646a013cae62303078028b3e325592f14c21e31945c6731619cf10329e13c878ae27e3399c8ce712329e87c978cac978c693f18c20e3399d8ce756329ea3c978ae26e3b9888ca7908ca72f19cf54329e5e643cf790f19c43c633948ce702329e93c8786e24e34990f15c46c6f328194f1919cf44329e91643c1dc8786e27e339968ce75a329ed6643c49329e07c8787a90f19c47c633968ce75c329e61643ca790f1dc4cc67304194f3b329e2bc8781e23e3a920e3b9908c673219cfdd643c6792f1dc41c6534ac6733c19cf75643c9dc9782e26e36943c6f310194f37329e5a329e2a329ed3c8780692f19c4fc6731419cf55643c2dc978fa90f1dc47c6d39b8c6734194f27329eb3c978ee24e339918ce706329eb6643c9792f1ec21e379848ca72b19cf04329e6a329e7d643c25643c83c8788e21e3b9868ca715194f3f329efbc9787a92f18c21e3e948c6731719cfc9643c3791f11491f11493f15c4ec6338d8ca70b19cf24329e1a329e33c8780693f11c47c633808ce730329efe643c0f92f17427e31947c6339c8ce754329e5bc8788e24e3694fc67325194f01014f2238f05b4c09f8ff5eb0c937833e025b0bcbfae439b59457c7c5451d0e5c770bcbba3fb430a04e3ba12e499d2ffd66534a27f4958479f157041c1f92f05c49c6d39e8ce748329e5bc8784e25e3194ec6338e8ca73b19cf83643cfdc9780e23e31940c6731c19cf60329e33c8786ac8782691f17421e39946c67339194f31194f1119cf4d643c2793f1dc45c6d3918c670c194f4f329efbc978fa91f1b422e3b9868ce718329e41643c25643cfbc878aac9782690f17425e379848c670f19cfa5643c6dc9786e20e339918ce74e329eb3c9783a91f18c26e3e94dc6731f194f1f329e96643c5791f11c45c6733e19cf40329ed3c878aac8786ac978ba91f13c44c6d3868ce762329ece643cd791f11c4fc6534ac6730719cf99643c7793f14c26e3b9908ca7828ce731329e2bc878da91f11c41c6733319cf29643cc3c878ce25e3194bc6731e194f0f329e07c87892643cadc978ae25e339968ce776329e0e643c23c9782692f19491f13c4ac67319194f828ce746329e93c8782e20e3194ac6730e19cf3d643cbdc878a692f1f425e32924e3b9888ce76a329ea3c9786e25e3399d8c670419cf78329e72329e87c9782e21e3399c8ce77a329e13c8788690f19c45c6338a8c670a194f25194f0b8307ffafde0ddba3f3f2eda042f8ff44ddb9bc9d5e97949167c4ea5ec507864dd57787a3fa7e10d44d4998df01f515f60f80e703473c3b0d1ed37711e42b41b3ed864d316e73c4b8dd6094f96dc028fa6d079eed8e7876183ca6ef22c8f701cdde376c8a71ab23c6f70d4699df0a8ca2dffbc0f3be239e6d068fe9bb08f20341b32d864d316e76c4b8c56094f9cdc028fa6d019e2d8e78b61a3ca6ef22c80f02cdde336c8a719323c6f70c4699df048ca2df7bc0f39e239ecd068fe9bb08f28341b38d864d316e70c4b8d16094f90dc028fa6d049e8d8e7836193ca6ef22c80f01cdd61b36c5b8ce11e37a8351e6d701a3e8b71e78d63be2d960f098be8b203f14345b6bd814e31a478c6b0d46995f038ca2df5ae059eb88679dc163fa2e82fc30d06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4ab41b3e5864d312e73c4b8dc6094f965c028fa2d079ee58e7856183ca6ef22c8d78066ef1a36c5f88e23c6770d46997f071845bf7781e75d473ccb0c1ed37711e44781664b0d9b625ce28871a9c128f34b8051f45b0a3c4b1df1bc63f098be8b205f0b9a2d366c8a719123c6c506a3cc2f0246d16f31f02c76c4b3c4e0317d17417e3c68f6b661538c0b1d31be6d30cafc426014fdde069eb71df12c32784cdf45909f009abd65d814e39b8e18df321865fe4d6014fdde029eb71cf12c34784cdf4590bf196cc2db1b6c6fe87c2fb0bdaef33dc1f69acef700dbab3adf1d6cafe87c37b0bdacf3e5607b49e7bb82ed459d2f03db0b3adf056ccfeb7c5fb03da7f3fdc0b640e793609baff3fdc1364fe72f06db5c9dbf046c7374fe52b0cdd6f9cbc0364be72f07db4c9dbf026c3374fe4ab04dd7f9abc0f6acce5f0db66774fe1ab03dadf3d782ed299d1f00b62775fe3ab03da1f3d783ed719dbf016cf7eafc8d60bb4de76f02db7e9dbf056c9fe8fcad60fb54e76f07dbb774fe0eb07d5be7ef04db7774fe2eb07d57e78783ed7b3a3f026cdfd7f99160fb81cedf0db61feafc68b0fd48e7ef01db8f757e0cd87ea2f363c1f6539d1f07b69fe9fc44b0fd5ce72781ed173a3f196cbfd4f92960fb95cedf07b6cf747e2ad87eadf3f783ed373aff00d87eabf30f82ed773aff10d87eaff30f83ed739d7f046c5fe8fca360fb83ce4f03db973aff18d8fea8f3d2aea976f64f3a5f12c4dbce7e15d44d25e05bfca9327fd6f9d6461959b610ca9ca33b14aa671cea5ba6d20e4bbbac6cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8a41d7e116cd20ebf003669879f079bb4c3cf812da9f30bc026edf07cb0493b3c0f6cd20ecf059bb4c373c026edf06cb0493b3c0b6cd20ecf049bb4c333c026edf074b0493bfc2cd8a41d7e066cd20e3f0d3669879f029bb4c34f824ddae127c026edf0e3609376f85eb0493b7c1bd8647ff90a6cd236ef079bb4cd9f804ddae64fc1266df3b7c0266df3b7c1266df377c0266df377c1266df3f7c0266df3f7c1266df30fc0266df30fc1266df38fc0266df38fc13656e77f0236699b7f0a36699b7f0636699b7f0e36699b7f0136699b7f0936699b7f0536699b3f039bb4cdbf069bb4cdbf019bb4cdbf059bb4cdbf039bb4cdbf079bb4cd9f834ddae62fc0266df31fc0f698ce4b5bdd066cf2ac584da5df70c271785a802f614906f1b6fd3825218f7597a9928c673619cf28329e57c878ce22e31942c6730219cfe1643c6f91f18c27e35940c6b3948c670919cf9b643ca793f1ac27e35947c6733419cf07643c3bc8782e22e32924e39949c6f31219cf39643c43c9782e20e339898c2741c6338f8c673119cf22329ed7c9783a90f1ac25e35943c6732c19cf76329e6d643cadc978be22e3994ec6731e19cf0b643ce792f10c23e339858ce708329e76643c15643c1792f1cc21e3799b8c672119cfab643c6792f1ac26e35945c6534ac6733c19cffb643c5bc9783a93f1b421e379868ca7968ce739329e2a329ed3c8780692f19c4fc67314194f4b329e3e643cb791f1cc22e379998ca71319cfd9643c2bc9785690f17c49c6732219cf16329ecd643c6dc978f690f14c20e3994fc6534dc6f30619cf3e329e12329e41643cc790f1b422e3d94fc633838ce745329ee5643ccbc8784e26e3798f8c6713194f11194f3119cf5c329e1a329ed7c878ce20e3194cc6731c19cf61643ccf92f13c4fc6f32e19cf3b643ca792f16c24e3d940c67324194f7b329e5d643c3bc9780a087812c011804dfedf126cf21d9e7d60fb42e7f7804dbee1f316d83ed7f9c7c0f688c5d6c2c2270cd3c026efca7e0136b93ff328d8e49d89cfc126e70de25fcdafe870207f0b5846fcb4b4f0a3bfcf2d5c92c7ed2dcb248378b737fa4a06f66fde15188c879a672719cf2e329ef6643c4792f16c20e3d948c6732a19cf3b643cef92f13c4fc6f32c19cf61643cc791f10c26e339838ce735329e1a329eb9643cc5643c45643c9bc878de23e339998c671919cf72329e17c9786690f1ec27e36945c6730c19cf20329e12329e7d643c6f90f15493f1cc27e39940c6b3878ca72d19cf66329e2d643c2792f17c49c6b3828c672519cfd9643c9dc8785e26e39945c6731b194f1f329e96643c4791f19c4fc633908ce734329e2a329ee7c8786ac9789e21e36943c6d3998c672b19cffb643cc793f19492f1ac22e3594dc6732619cfab643c0bc978de26e39943c67321194f05194f3b329e23c8784e21e31946c6732e19cf0b643ce791f14c27e3f98a8ca73519cf36329eed643cc792f1ac21e3594bc6d3818ce775329e45643c8bc978e691f124c8784e22e3b9808c672819cf39643c2f91f1cc24e32924e3b9888c670719cf07643c4793f1ac23e3594fc6733a19cf9b643c4bc8789692f12c20e3194fc6f31619cfe1643c2790f10c21e3398b8ce715329e51643cb3c9782ac9785a5878f639e2916fc5c8ba657e5f33f7bdc3f0bd234f7c6f337c6fcb13df5b0ddf5bf3c4f766c3f7e63cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f73b86ef77f2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b61d2577997fe4dc0ff2b80f12d478cfb0c46997f0b18c586dfa3ae70c41375ed5e41e05b6921f7b2e4996702fe5f098cae62aac26094795b4ced009e4a473c51f71c2a097c2b2de45d6ce9539980ffe3f8cbae62aad26094795b4c6d039e3e8e78a2ee95f421f0adb490779fe59dbf04fc1fc75b7715537d0c4699b7c5d456e019e88827ea1ecf4002df4a0bf956987c932601ffc7f1195dc5d4408351e66d3185e3e70e72c413756f6a10816fa5857c6b57be799980ffe3f84dae626a90c128f3b698c2f1e3063be289baa73698c0b7d2429e05cb37da13f0ff21c0e82aa6061b8c326f8b291cef6688239ea87b8143087c2b2d86eabcf4b14ac0ff8702a3ab981a6230cabc2da6d601cf50473c51f7308712f8565a0cd37979872301ff1f068cae626aa8c128f3b6985a033cc31cf144dd7b1d46e05b6951a5f3abf56f02fe5f058cae626a98c128f3b6985a053c558e78a2ee195711f8565a54ebbc7c732e01ffc7f1df873962ac3218657e18308a6d05f0543be289bad75d4de05b6921dff65fae7f13f07f1c8fd5554c551b8c326f8b291c0fbac6114fd43dfa1a02df4a8b513a2f63c224e0ffa380d1554cd5188c326f8b291cbf7294239ea8670ba3087c2b2de4db5c4bf56f02fe5f0b8cae626a94c128f3b6985a023cb58e7816193c8b2c5a1c2adf4a0be9cbbd58ff26e0ffe381d1554cd51a8c326f8ba945c033de114fd4b39cf104be9516f26dedb7f56f02fe3f01185dc5d4788351e66d31b510782638e2897a0635210bbea39ea764c377d4b3816cf88ebacf9d0ddf51f76cb3e13beafe63367c47dd4bcb86efa8fb42d9f01d758f231bbea3aed7b3e13beada331bbea3aea3b2e13bea9a201bbea3ce6fb3e13bea5c2d1bbea3ce3b7c7beedbf3b87d1fca73877c6dcf0fe531f4501e4bfcb581bf36c8966f7f2cf1d706d9f29dafd706be3dcf7e7b2ed75f0541f4f5d83b8e7c2f317ccb3c3e6759e2c8f722c3b7cce33383458e7c2f347ccb3cdeff5ee8c877b1e15be61766c1773bc377bb2cfa6e6ff86e6ff1ed607b972582fad7dfc2805312f218036f3bd0c2513d4bd57a17eb757d1de37a6df76dccfda518ca2c06fd5cb71db26eb3edc845668c8b82f87c9726c0877c974cd9e4f9f11b609376ff75b049bf80d7c026c7a657c126cfa45e019b3cb37a196ca3747e3fd8e4d931f6d997e7ff5bc156a5f3d8577c98ce6f069bf4a5c23ecad21f6e13d8a44f23f68d957ea91bc0267d8bb14fa6f40f5f0736e9e38f7d01e53d8d356093776db00f9abc2fb50a6c7b741efb3ec9776856806d9ace2f07db1f747e19d81ed6f9dbc0f67b9dff0a6cbfd3f985607b48e7df06db6f757e31d81ed4f997c0f61b9d7f116c0fe8fc0b60bb5fe7f15db65febfc4eb07da6f3f80ed5549ddf01b65fe93cbebb739fce6f03db2f75fe79b04dd1f9e7c03659e71780ed173a3f1f6c3fd7f979609ba4f373c1f6339d9f03b6893a3f1b6c3fd5f959601ba7f333c1f6139d9f01b6b13a3f1d6c6374fe59b0fd58e79f01db8f74fe4bb0dda3f38bc0d642e797804dc68cc47e2a853aff0ed85ae93cf63f92effb4f00db613a3f1e6c6d74be166cf26db8516093f1a06bc096d0f96ab015e97c15d8e4fc6c18d864fc93a1609373a921603b52e707834dce7b06814dc6b31c0836f906691fb01da3f39560936feb5780ed389ddf07361973ec2db0c977ebf6804dc6627e146cf2bdea69603b59e7ff00361987e561b09daaf3bf07db693aff3bb0c9373c1f025b89ceff166c1d74fe41b09da1f3bf019b8c91f500d8ced2f9fbc1266307ff1a6cf2bde7cfc0d651e7a782ed5c9dff15d8642c91fbc026e383fe126c9d747e0ad8e43bdc93c176a1ceff026c32dedfcfc126df189e043619d7ed6760eba2f313c156a6f33f055b579d1f07b6729dff09d8bae9fc58b075d7f93160eba1f33f065b4f9dff11d87ae9bcb4336a7f56fbf95e3d9f0ce23b2f53fe3e0aea4f0d5d1b0803f2c479ae5d0c3ce86b77ec752f4b9dd7cb7edf42af57626837f8de15bbeff435c5877a5d857abdbb0cdf8550e65cdd38a8e5e498df522fb7c7580eef63c9ba65998bc0bed358773b5ddf0f1dd57797c124dca88394b94033a963e30f74be0d2c13235beafa58622d000d714a425e18dc6855568ae7bd8de1f9107876c7ce93be5e771113b86fc57dbd6edec73563ad18caec02fd763ad00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8a67afcee3736529b79784516cbb81c7c57d7e7c0e2beb57cf75769e5ee77777ec7eeb3fdf6ba5d75b6ad4b910ca7c0dcf9cf6e87c11fc5fb65bd4b674f09cb0c16d29fe8aa03ef82c68af239edd06cf6e8b16922f89cd77d908371a9795aabe2cea19fb1e43d7bd164d5dedafbbf5ba0a0c4d717ffdc8e0c167a345c0fbb1fe4dc07a3e863a38d8c71b8c0bf187fbd26eb049fe236074b19df15822ed813c0fc767d352e657c673f1f8b77d59a9cb76e303a853323830be0ba1ccefa0edfb5ce7b16fc85ed0ed1f96ffcbd4d0736ad14fd5797bfc754e6ddf6dc099043fe8fb7d608dc977bd77680a74123f622f84fcdfa13f8794133d446b61c7f1ca91dd5cee2363b96228b3c352ff64106ffdb71b3cdb0d66b54dbe8438fb071cff5db5493b2234ba08349232bb41a33d8e78761b3cc221fe5419d9fead8d32b26c2194f95fd046a9ba483b2ff5c4be2d780c70751c135fb26e99b79d1b7f088c661d557c0c38ae8e7777ecbcb9d5ffebb092f42fb6eb71f5ff9275b7d3cb0a4760acbf14d62f5cad83e863cbff6cdf92baf5bbec5fb6c7a8b3b0a0ce52a65d49fa57c5d9e53a9fc9b9fea1ba6e8b3ad7dfe1802711d4bff6565343c7773cc67ce080c7513d4b6dc7ae9d469d8aa14c47a8a783f39806df05de0ebe5d6c73d442cea176195a1442990e25e95f693ba274c46bd50fb3529732ebf960a9a52e52a663495d5dda803d4e2697dbed7da8935aef6e4b5da5cc052575ba74d6f9046c27bc6fd2c7f27f991a6a0f702c9e2df1d739b57d37036712fca0eff7803526dff5be0522e7fbe247ec8590af2ca92b2be5440fd15ad8d53e22effc21bbb9dc2e63b96228b3d552ff64106ffdb7183c5b0c66b54dba94d4e5258e5cb69b5b23342a058da40cde3f96633bbe77673beeef76c41d75dcdf0d8c66bb89e72e2ed9f6186ce63d54dbf9a094c1733229734d49fa57b5b3094b59f3deb08bfb98f80e6a00f5088cbaca8431e0e0dab01caf9da49d123f9dc1be5be745e7ce86768550666049fad7e179b7f5dea5797d87d714c26dee5bf8eec7e0923a6e1c3b71b7fe2d02db27fad7d1755ab9ed9ea170d8ee190e2ba963c765856bbfa52ee635728be0c07bea5f1b65f1be5b43cb9979731c4aa5ef2746399b1fbce689ed5d8d2ea5a5c8d422b0df2ff8c8602f080e1c7353f6038c39f33e4a67633d781fa5b624fd2b6d9259566dfb7f3fa64e1fd98ea21db62718931f016352e74bbfd9d4c5567f99177f8af163a30e6edaaef4fb4a99dc07de033c2eda76476d74291e63dbc4b6de5e55b6e3ff478656597c5e6b3de69bcfdcdb18f9787c9755dbee3fd9b4d865e171f51c254a8b5d16dff169d17d84edf861d362a785676796b5d869f11da3163578dfb3212d3eb0f0b8b817d590161f587cc7a7458fd2869e6ba0163b2c3caeee3d446921fe3265de49c0dcc6c8c7e3bbbcca769fcca6c5760b8fabebe6282db65b7cc7a74597ee788fae212db65978e2bf3fd7b016db2cbee3d3a2672fbc87d79016ef5b785c3dd38dd2e27d8bef18e362a4ed5e8e4d8bad169ead59d662abc5778ce787dd6df7da6c5a6cb1f038b8efdaa0165b2cbe63d46238de776d488bcd169ecd59d662b3c5777c5a5475b3dd13b669f19e85c7d53de1282ddeb3f88e4f8be13d95ef4d8dd0629385675396b5d864f11de335542a2e3636428b8d169e8d59d662a3c5777c5a54a7ceb53634428b0d169e0d59d66283c5777c5a94a68ea9eb1ba1c57a0bcffa2c6bb1dee23bc6b8485d4fae6b8416eb2c3cebb2acc53a8bef188f23a9b858db082dd65a78d666598bb516dff1695193baffb4a6115aacb1f0acc9b2166b2cbe63bce7928a8bd58dd062b585677596b5586df11d9f165d53c7d4558dd0629585675596b55865f11d9f162353cfc45636428b95169e9559d662a5c5778ce79da9f6624523b45861e15991652d56587cc778de99ba7fb1bc115a2cb7f02ccfb216cb2dbe636c3b53e79dcb1aa1c5320bcfb22c6bb1cce23bc6f3ce9416ef36428b772d3cef66598b772dbe633cef4c1d47de698416ef58785c8d8112a5c53b16df31c645aaed5cda082d965a789666598ba516df31ded74ab59d4b1aa1c5120b8fabf11aa2b45862f11de3f548ea1edfe24668b1d8c2b338cb5a2cb6f88ef15951ea1c7c5123b45864e15994652d1681ef3db1fb4ef7e7161fd217eb42438b4228735a87f4aff4c58ad251d681fdcab02e6fc75e9774bfb2851175791bea2265ce82bab4099c8c5154eea8aea998790beaa4d6fbb1a5ae52e6bc0e75ba74d2f9046c93fda05b6fcbff652a30e6939017fd549ddf88bfcea9587d1d3893e0077dbf06ac31f9ee82be0b74123f622f847caf0e7565a59ce8215a0bbbda47ded4796437975b642c570c65deb4d43f19c45bff370c9e370ce6d47b0f106712476edaae34d39b111a5d081a4919ecb3f7b1231eb30fa170883f5546b67f6ba30cf6a1943217431b85fd4aa59e89e0c07e938edab22ec82eeb9679f1570cb63dc068d651c5c767d0f753c68a907124944dc685e80aebe961d8545d7b3aaaabf89275cb7c4f6094712a7a649fb1acb18cdd0d46c5d3db816638f6864c0d1d2f7a034f2f073c8eea993a0e551875ea69d4a918cae0bb8d150eea59007e65dd325f01be5d6c73d4428ec9e7195a14429961c6f963948eb20e15bf3d2c75e9ebb82eb26e6997fa66c177a5e1bb9be13b11d4dfce41d0f0fe5509cc7d1c30abf5f68b7fbda578de2631257eba419dfa830671d509d725e779fd0d6d0b213f05cef3a49c9495e397b0ab58966d89ece672bd8de58aa14c5f4bfd9341bcf5ef67f0f43398d536b907ceed1cec0fa918e86b70c87c37d0ae5f84767d413b2983c7bfee8eb4eb63f0c87c77e091739c0ab0c9b982f027e0ff5db3c06db67b15166eb1e13871dd2d8cdde2674c9deb74371865be1b308aad0ff0543ad2ccdcd6e719fae071b9b55146962d843233e1d898b09455fb5dc782ba7ab5d4f6d8de1dd36d7a6b077ae1388d01e813181a06a097d4b395039eb641dd588d9326d74e1c7ef7c89b46a61f3d0a5aa18189bf05966ab4001be65b5a6c41507f48ca42b0c99094adc0d6c2900587c294f232a49d0bb9500f5977a1c1d90658e2f48dc379cad450e81c063c2e4259858e0ce9a943e7b689a3278fc4f8686570362576d4ff5a36502e6a5daeb683b94f2461de8cc14247fe5b427d93302ffed4b629d6f9f1c347dcdb7fe2dd53c68e1c3779120a65eed8982f08ea6f00f3374a70573b1d060056181b875646bdb0c190ffc986691b3f67398e996b6a13803f99da826e873bd04dad5fc6be1d317ccc981ba6548d193de2f229e3464c1e5d3b0eb7661b43b9a82d2dff6f0d365b138f65d584cd162e7b98c5669b7094e136609323d7e160139eb6606b0979296f6e1927e1da11d62fbb94fa9f12a795aef861415d08c8e158b5ab6aff559f8f55a7416aa86335b4b1da9c6ae86275c7500d4dacbe62a7861e56430daba1854f0ad24307aba1824f0dd24301abaf5d9404e9a17dcf08d243f79e15a487e63d07f8be0dcce706e9d32e35b46ea7203d74aeba75a95e5d579f7953efd6abd377755b409df2aa4b3c75faa94e3bd5e585ba7da16e65a9533a75baac4e05d5e99bba1ce9a7b5ee1fa68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc3744d98ae0dd380305d17a6ebc37443986e0cd34d61ba394cb704e9e19d6f0dd2c3afabe19f6f0fd24343df11a4878dbe33480f297d57901e6e7a78901e8a7a44901ea67a64901ec2faee203dbcf5e8203d4ceebd417aa8ddb1417ab85e351cb61a265b0d9fad86f9554302ab2185d550c36a58623584b11a02590d8dfc60901e72590dd9fc48901ef6795a981e0bd3e3617a224c4f86e9a9303d1da4870757c3864f0fd2c38cabe1c76705e9e1cae704e9e1cdd5b0e76a3874354cba1a3e5d0dabae867957c3bfab61e15f0ed32b617a35483f92508f62d4230a75fb5f3d0653b7a8df0ed2b7ce1707e947dcea91bfea02a1ba84a82e32cb8374172ad5a54c75b1535d0e55174cd5255575d1555d9655176ed5a55d75f157af3ca85740d42b31ea1521f5ca947a854cbd52a75e3154af89aad72ed56bc4eab5eadd41fab6f8de20fda854dd0e578f06d42d7375fbfed3307d2b48c7e477c2f4dd307d2f4cdf0fd30fc2f4c3203dacb11aee580d97ac865656c330ab219bd550ce6a2868356cf467417ae8693574f56f83f490d8bf0fd3e761fa22480faffd6598fe18a6afc2f4a730fd394c7f09d35fc3f4b730fd4b98fe354cff16a6bf87e91f61fa675037cc36362427e9d6475fc104c3274f1e3976fce492c9b52563a78c993c7afc98074aa68e9e3caaa4f6be91136bc6d44ec585bfad179631c2fb4f9c38fc8192d1e3aa47de5f523b6572496d4d4955ed9471d5f50ee27fd10b9d72a0c7e1d5d5d1cefef39b90fedf263a3d5cb78b32fafa550dd7ada865130439aa290b756fd9b40a4dd44730b9d4bd397d1e5c32694cede492d29271e1dff0c05b3b756475e712fcdfa450e449934b264d1e3e717249cdc4dab1255d3ae37a1f6ddb844afc575b3730679fd434713aeaef2c3529c47e797a1314f88fd39b46dabae41b90b62d699ad3929226d4f09ca62c747513096f29899465d294aac913878f981cbdf0eddf64e1bb9a52cd714dace6a91d9ae0eccca62cd4bf43d308ef6a8ab31919380bfe1bc78b38aa8c550600", ->>>>>>> master + "bytecode": "0x1f8b08000000000000ffed9d779815c5baee7b604074cd8898b3830915816118f200833967141111866100058628823991a3398224c95940411110c3ce3927756f773c61ff75ef39e7deebb95d6bd577e69da27a316bec5abc6b56f5f3d4acea6faafbfbd5db5f57a7eaae822035fd334c053adf3c4ce707874ef2ff4afd5bfacda6ce31aeabd42567418e7036cb11cee639c25998239c2d7284b3658e701e95239cad7284f3e81839155bb3a0fe1437ef310e748d9b3191639a16e580a6c539a6e9b139a069eb2037daa8e37284b34d8e701e9f239c27e408e78939c279528e709e9c239ca7e408e7a939c2795a8e709e9e239c67e408e79939c279568e709e9d239ce7e40867498e70b6cd11ce737384f3bc1ce13c3f47382fc811ce0b63e46c0f9cedf4ef45faf762fd7b89fe95b297eadf0efab7a3ae63a19eefa4b8c2a41ed29419ffeb12a6f230750d5337e37fddc3d4234c3dc3d44bffaf44ffaf77982ac2d4274c7dc3d44f6bd03f4c9785e9f2305d11a62bc3745598ae0ed33561ba364cd785e9fa30dd10a61bc37453986e0ed32d61ba354cb785e9f630dd11a60161ba334c7785696098ee0ed32083e59e300d0ed3bd611a12a6fbc234344cc3c25415a6e161aa0ed38830d5846964984685697498ee0fd303611a13a6b1611a17a6da308d0fd384304d0cd3a4304d0ed394303d18a6a9617a284cd3c234ddd0ece1303d12a647c3f498c1f978989e08d393617a2a4c4f87e999303d1ba619619a19a659619a1da639619a1ba679619a1fa605615a18a645615a1ca6e7c2f47c985e08d38b617a294c2f87e99530bd1aa6d7c2f47a98de08d39b615aa2596447581aa6b7c2b42c4ccbc3b4224c2bc3b42a4c6f87697598d684696d98d685697d9836846963983685697398b684696b98b685697b98de09d38e30ed0cd3ae30bd1ba6f7c2b43b4c7bc2f47e983e08d3de307d18a67d61da1fa60361fa284c07c3f471983e09d3a761fa2c4cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf7d7c632bf09d36f0ddbefc2f47bc3f687307daef35fe8df2ff5ef1ff5ef9ff4ef57faf7cffaf72ffaf7affaf76ffaf7effaf71ffaf75ff4efbfeadf7fd3bfffae7fff19a63d6d53f95641dd5419c4d44695d7249ffd88f8ed82fa93d2a2b9fe9ffc96687ba19e975fd1ae859e6f61d85beaf996c67a5ae9f95686bd8d9e6f63d84fd0f32718f693f4fc4986fd143d7f8a613f5fcf9f0ff64400f786b55dd99a6b5301d8245e9b81ad85b635075b4b591dd88ed2b6166093eddb126c476bdb51603b46db5a812da16d478b96612ad2b6ca20ae58291da6d65b1cf77af5f3b263e3e71daed6dbda11ef71f1f38e50eb6de38057c5c7f17a5dc741dc9ca06d6dc076a2b61d0fb693b4ed04b09dac6d2782ed146d3b096ca76adbc9603b4ddb4e01dbe9da762ad8ced0b6d3c076a6b69d0eb6b3b4ed0cb09dad6d6782ed1c6d3b0b6c25da7636d874931b9c03b673b5ad046ce7695b5bb09daf6de782ed026d3b0f6c176adbf96093f6f702b0c9f9e285daa6da8ea30b60196d97762bb98cb4d960bb58da6bb05d226d35d8da4b3b0db64bc1b7d83a405b23b68eda26ed96fa5f2f9daf0ce2da4fca6ad47a7bc7bdde70cd6abd7de25f6ff29963dfa04eeb4af0d31bb4eaa7f331f66bea8cbe0b74123f622f84fc755056ca891e72ec1176758ca9d0f97e6996eb652c570c652a2cf5af0ce2ad7f1f83a78fc1dc02f26e62b64b171fb30d9e328ed98150d68c3d390f6a8a317b23703888d9ee3e661b3c651cb33550d68c3d39176e8a317b0f703888d92a37315b56ea633675df2c08ecb127d7434d3166470347fc31dbd5c76cc3a78c63f629286bc69e5c1337c5989d0a1cf1c76cf72a7f6ed0e029e3985d0465cdd893fb334d31669f050e07315be3dbd9064f19c7ec12286bc69edc2b6c8a31fb3c70c41fb33d1dc56c171fb341ea196810d8634fee5b37c5985d061cf1c7ec707f7fb6e153c631bb1bca9ab127cf509a62cc6ed679f59ce127fa39c39960fba9b69d05bcf1c776755747b15de6633bd5372408ec312acff39a626c7fa8f32a8e7f01fd11c4f64b6d6b0bb65f69dbb960fbb5b69d07f572b00f54f97da0c153c6fbc06fa1ac19cbf26cb929ee033f020e07315bed63b6c153c631fb77286bc69ef473688a31fb07e07010b3353e661b3c651cb3ff0165cdd8bb48e79b62cc4a5f5375bef0853e5fb8046c5f6a5b7bb0fd51db2e05db9fb4ad03d8bed2b68e60fbb3b67502db5fb4ad146c7fd5b6ce60fb9bb69581edefdad6056cffd0b672b0fd8bb67505dbbf6a5b37b0fd9bb67507dbbf6b5b0fb0fd53db7a6a9b7ade257dafe4bcb515f05706f16e5be97729eb96f9ce59f0dddaf0dd3a8bbedb18bedb587c9739f09d001f321518f395902f73cb535a0c3ce8ab3c7e5f5d54ddbb040daf7b39f0747550f704f868084f57e0e9163f4fb2ff6ff7f8d79bdcc65d0c4d13e0ab0bd4ab87837a15802f59b7cc8bbf62b061dbdac3c2d8337ec6b202f025eb96f99ec028366cebe59d2bd97fd4f1b05d411daf837d29794e24fee4bb65c2510e7629736bdb3ab6f69aad08fe8fc7bd6e86cd515c26e3427cc9ba655efc15417dba659fb1aca18c5d0d46576d4401f892757bdf75db41f2781c7770ad636dd3c477ef2cf8ee69f82e377c63db2953ba635b4f608efd9a531fdb2ae25f6f295e9fc8b5a1f8c1f307bc868bab4ee85bae0dc58fd80b217f53415d5929277a483b2cec2a96655b22bbb95c0f63b96228d3db52ffca20defa57183c1506b3da2697c3b1d0c1fe908c81de0687cc9783761511daf506eda4cc45a09dabf6ac97c123f3dd8047dab1eec0e3ea9a288a271bd76387f38de7b078fd2cffc7f30057dbabb3c128f3b6edd513186de72a0eae67d29eab740546b1f5029e2e8e348bdaae5d487c3b8895647b243ee4dc5cf6df6e6097323df50b75aaadbc1fda4a173182f1285343af79e3df4e65c96bf0ae19f0e0b673705dd5d9513c96e2fd9baf837863cd6c97ba1a5a45dde371d596773178645efc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667c6e749d86f4bca75236134fbbfb9bacf9ffcfea15e97ac5f3dd7f93f4efb83959562ff18e907718951e7422853dcacaeec7f437f30f33915f691ece656bbe4b6c4fe9895302ffeb0af156e4b86fe4e25b1f92e1beeea799bfa0698fa8ea6d9f7b39b455317fd9f51d3024353ec8f7fa9c1a3e2b4a2791d9b8b677f993e8b44ad241fe7b3bde2c01eebf16f97b27acfac9b05f5db0f3cceb8eabf236db53c2fef6df82e84326734abdb36d2b74ac618ee622c87fd7e64ddb2cc2560af30d6dd5a2f2b1c2d8cf5778765a5ccd9d0a6ee6f56a79983b6b22cd3beebf8dc3cfee370ea397e970c783a038f8b76c6d1f94629ee03713fc737fba7d9ce63a40cf6ed73d0af326d7f27f1e7993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999f59f198cf5af1fdda7212c62cf57d483ecf906f95c9fa93df0b6e56e7d7f5733879e6d4dea833be3bfacf667565b7eb7c5170687f87a86de9eafb1451db52fce1b767f059908be7ba05e04bd65d66d142f225b1f94e3dc7773136843cc7ef62e85a6ed1d4d5fe8acf585153dc5fbb1a3cf86c34eadb3e6586cd65dfa1a8b8107fb82f95814df2f87eb48bed8cc712b35f8ff8c3e7d7dfd1dab60e5c6dfbb25297ed067e37a5323834bef17b2a3f84b6efc73a8f7d38b0efc81796ffcb94ee39b5e8a7eaece0fb9aa505b02ed9beb66f7bf607d6987c77c67515e8d4dfd0a010f29f37ab2b2be5a4ac682dec6a1f916fc020bbb95c5763b96228d3d752ffca20defa9bdf5aed6730ab6df23388b32fe0f8efaa4dea1ba1d125a09194c1f320577df2cc36d2ecdf88fdf65a1a65f09c45cafc0ddaa8a8fea3b63e87ae8e63517d0e6de7c69d81d1aca3d9cf33dffb69fd27b41771f7d3fa4f8821eca71518eb6f0feb17ae9641f4b145cafc3f63fde639b92c83fdc0fea7ff137ccfa54ce73339273f52d757b673725c2eaaee8a19bf8356192333c604b2e079829439466b2ddbac2282bba765d9e28865452bf35b6145c1a1fab9f9ce5a6a9fef67d445e21abf412e654e80bab8396f499d03bafaa65c25d449e5cb2c759532a7c2be76bace27603be17e7bb1e5ff32a53b07c431dc2f8bbfcec9ed7b397056821ff47d05b0c6e4bb33fa967340f123f642c85fd4bcaeac94133d446b6157fb889c4721bbb95c6f63b96228d3df52ffca20defa5f66f05c6630ab6d7216c4d9c5d00fdd555bdd3f42a3f6a09194c17b8ab6ef80da8e31aefaf6471d63ca80d16c37f138e992cd7c4fc8bcaf663b479032b22c9e237487763661296bde2f94e3659cfd86f15d89eee017df9570f5ede65ea05b25cce379c191f4ede23bb6ca5fd49809bdb2e03b6acc846cf86e63f86e9345df5e73af3993e60ec62048be7f86df2c5553baf3521c9740966b068c2ec6724804f5bf3d7e38461cdf41966b0e8c2e8e0f997efbbc3b30ca7285c0e8e2dd521c7fa3218cf88d613cce0ba3836fc5766eecb762f19e5e4b60647a67139f4d1d058c2eeea136f65d3d3c9f6f05bfaec625ea9201239ecfcb724703a38b7be3f86cb0218c785d24cb1d038c2e9e61653abe137e7b1eef2dbb644c776c77dc17a52cd37b2f156e79d29e6ba06f07e31a26b5c0fb8c87d3a28f5b9eb4e73ee8dbc17dbfa41638cee0e1b4c067832ec63d4c04f59fc31d8e079f5fca72c70363a523c67e19305602e3ffdc2b06c6fe8e182b3360ec0f8c623f11181ddc7f4d32f6cf8011ef53ca722701e3e58e182fcb80f1726094e54e064617f75213e0b7218c5700a32c770a305ee988f18a0c18af044659ee5460bcca11e39519305e058cb2dc69c078b523c6ab3260bc1a1865b9d381f11a478c5767c0780d30ca726700e3b58e18afc980f15a6094e5ce04c6eb1c315e9b01e375c028cb9d058cd73b62bc2e03c6eb8151963b1b186f70c4787d068c3700a32c770e30dee888f1860c186f044659ae04186f72c47863068c3701a32cd716186f76c47853068c3703a32c772e30dee288f1e60c186f014659ee3c60bcd511e32d1930de0a8cb2dcf9c0789b23c65b3360bc0d1865b90b80f176478cb765c0783b30ca721702e31d8e186fcf80f10e60bcddc238c011e31d19300e004659ee5260bc337ec6e4b5f4800c18ef049ebbe2e7496a7667063c77b9e5497e57ef4e8bafbbe3f795dc16038386d7fd6ee019143f4f725bdc9d018f3014c372a8d93df13326351b9401e33dc033387e9ea466f764c0331834bbc7a2d9bdf13326351b9c01e3bdc033247e9ea466f766c0330434bbd7a2d97df13326351b9201e37dc033347e9ea466f765c03334a8d3ec3e8b66c3e2674c6a363403c661c053153f4f52b36119f0548166c32c9a0d8f9f31a95955068cc381a73a7e9ea466c333e0a906cd865b341b113f6352b3ea0c1847004f4dfc3c49cd4664c053039a8db06836327ec6a4663519308e049e51f1f324351b9901cf28d06ca445b3d1f13326351b9501e368e0b93f7e9ea466a333e0b91f341b6dd1ec01478cf767c0f8808527eeef64df6ff135d651ddc7040dafbb3014c372d84f629c23c6b119308e0346590efb49d43a621c9701632d30ca7209c78ce9fa49d482eff1f1fb4eb64bb541c3f519ef96276d3f09f43dc19116e383866b31c12d4fda7e12e87ba2232d26040dd76222f04c72a045027c348447188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc4838e18a764c0f82030ca72d84f62aa23c60733609c0a8cb21cf69378c811e3d40c181f0246590efb494c73c4f850068cd3805196c37e12d31d314ecb80713a30ca72d84fe261478cd333607c18186539ec27f18823c68733607c04186539ec27f1a823c64732607c14186539ec27f19823c64733607c0c186539ec27f1b823c6c732607c1c186539ec27f18423c6c733607c02186539ec27f1a423c62732607c121865b9071c33a6bb7e79b289fb8eba5669eabea3ae4b9aba6f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fd9403df09f0215381315f0979612886e51ef08c4d9a11794ae2e329c5baa3afa709eafeb485a7c051ddd1d733047517865c637c2a07181fc80146af63aa0f62631815cfb38e789ec980e759e099e188e7d90c786600cfccf87992313523031e612886e51ec801c6a77280d1ebe8756462f43ae68f8e9ed1337a46cf78241873a10df78c39118f658d65543cb3e2e7496a3633039e59a0992c77570e303e9d038c4fb9652c6b2ca3e2991d3f4f52b35919f0cc06cd64b9bbdc3296359651f1cc899f27a9d9ec0c78e68066b32d9a39602c6b2ca3e2991b3f4f52b33919f0cc05cde6583473c058d65846c5332f7e9ea4667333e099079acdb568e680b1acb18c8a677efc3c49cde665c0331f349b67d1cc016359631915cf82f879929acdcf8067016836dfa29903c6b2c6322a9e85f1f324355b9001cf42d06c814533078c658d65543c8be2e7496ab630039e45a0d9428b66ac8c0fe400e35339c0e858c7b2c6322a9ec58e781665c0b318789e73c4b338039ee780e7f9f8799231f55c063cc2500ccb3d90038c4fe500a3d7d1ebc8c4e875cc1f1d3da367f48c99313e9d038c7e5b7b46564607d75769df457aae89fb8e7a17a9a9fb8e7a17a9a9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df2fc4efbb2cd36fccbc003c2ebe79e3a89ea56abd2fea757d1da37e4aab970cad9e33b42a86322f827e2f39d0af00fccaba655efc65cadc8e80d991efb263c3751c0df5171f4f197a28ff2f3baa7b545bff7213f71dd5d63775df516d7d53f7ede3dcc7793ef8f671eee33c1f7cfb38f771cee21bf32d82baf376f9fea95ac72b3a5fa8e7a5fcd36097320f1f95fa6d1df87dc8856fbf0ff963453ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c633c4cc8024f60f00469786691f15493f10c24e3b99e8ca71f19cf62329e87c8787a90f18c21e3b98f8ce736329e27c978ae22e3799c8ca73319cf24329ed9643c35643c83c8786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e6cbcbf94094f47329e0a329e29643c73c8784691f15c4cc633988ce722329e9bc9782e27e339968ca735194f3919cf23643ce3c9788693f1dc49c6731d194f5f329e45643c53c9787a92f1cc25e3b99f8c670619cf10329e5bc978ae24e3b9848ce731329e32329ee6643c13c9784690f1dc4dc6d39e8ce706329e4a329e69643cddc978e691f18c25e3194ac6733b19cf33643c5793f13c41c6d39b8c673219cf48329e7bc878da91f1dc44c67319194f11194f31194f57329e87c978e693f1d492f1cc24e3a922e31940c6732d194f1f329e85643c0f92f1f422e3194dc6732f19cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243c73049c0ff5f005b336359f5d9d717dad6fdff556d6f06cbbca6f3cd2deb7e156cf22dd9d72ccba24eaf425d2a75bef49b4d499dd05725cc8bbf22e0788d846701194f17329e36643cc791f13c4ac6d3898ce70a329e5bc878ee25e3194dc6d38b8ce741329e85643c7dc878ae25e31940c65345c633938ca7968c673e19cfc3643c5dc9788ac9788ac8782e23e3b9898ca71d19cf3d643c23c9782693f1f426e379828ce76a329e67c8786e27e3194ac633968c671e194f77329e69643c95643c3790f1b427e3b99b8c670419cf44329ee6643c65643c8f91f15c42c6732519cfad643c43c8786690f1dc4fc633978ca72719cf54329e45643c7dc978ae23e3b9938c673819cf78329e47c878cac9785a93f11c4bc67339198f7c6f9085e722329ec1643c1793f18c22e39943c633858ca7828ca72319cf0b643cd790f13c4bc6534ac6730719cf30329e71643cddc8783a90f14c27e3e94fc6732319cf20329e1a329ed9643c93c8783a93f13c4ec6731519cf93643cb791f1dc47c633868ca70719cf43643c8bc978fa91f15c4fc633908ca79a8c671619cf040bcf0b8e78e47d7759b7ccbf40e2dbc1762855eb7ddd519dded0eb6aa1d72bfce2af10cacc3c26f5ab9e0fe1b2c2657e9f00efc5bd011abde1a82eb23d0a8ced83be5f71e4dbfc5eb3ccbfd2c47db7367cb7ce13df6d0cdf6df2c4b78f731fe7f9e0dbc7b98ff37cf0ede3dcc739936f07d70665f89d34990a8cf94ac8e3f5828befcb39aa67bdebc4af63d44f69f5a6a195796d550c655e07fdde74a09fedda53e6c55fa6cced0898312e4a8278e36249fc752a53fd328f065d9718fa62bd963ad234ea18b2b489fb8e3a863475df51c790a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc9f75b3a1fe3756329fa50cf17e57ae02df0bb5ce70b62f4abd6b54cafab50af5b3896835dca344ba47e5b077e9f77e1dbeff3fed8960fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c9b79e92f7e11b0b9eacf1f158bd97897e048fa8e8ac5a6ee3b2a169bba6f1fe73ece997caf70e03b013e644ad7c76f05f02c73c0e3a89ec9671b2b8d3abd60d4a918cae0317ea5837a16805f59b7ccaf041e9926008f8b3868c836479e59643cd5643c03c978ae27e3e947c6b3988ce721329e1e643c63c878ee23e3b98d8ce749329eabc8781e27e3e94cc633898c6736194f0d19cf20329e37c9786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e8e643c15643c53c878e690f18c22e3b9988c673019cfcd643c9793f11c4bc6d39a8ca79c8ce711329ef1643cc3c978ee24e3b98e8ca72f19cf22329ea9643c3dc978e692f1dc4fc633838c670819cfad643c5792f15c42c6f318194f19194f73329e89643c23c878ee26e3694fc67303194f2519cf34329eee643cf3c878c692f10c25e3b99d8ce719329eabc9789e20e3e94dc633998c672419cf3d643cedc8786e22e3b98c8ca7888ca7988ca72b19cfc3643cf3c9786ac9786692f15491f10c20e3b9968ca70f19cf42329e07c9787a91f18c26e3b9978c672919cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243dffd4fc0ffdf049bbca3fe02d856e9fc32b035b3f868aef32bc156a8f3b28ea3c2b4b4eda1eb469d5cbd978fbe2a615efc1501c72a129e05643c5dc878da90f11c47c6f328194f27329e2bc8786e21e3594ac6732f19cf68329e5e643c0f92f12c24e3e943c6732d19cf00329e2a329e99643cb5643cf3c9781e26e3e94ac6534cc65344c6731919cf4d643cedc878ee21e31949c633998ca73719cf13643c5793f13c43c6733b19cf50329eb1643cf3c878ba93f14c23e3a924e3b9818ca73d19cfdd643c23c8782692f13427e32923e3798c8ce712329e2bc9786e25e31942c633838ce77e329eb9643c3dc978a692f12c22e3e94bc6731d19cf9d643cc3c978c693f13c42c6534ec6d39a8ce758329ecbc9786e26e3194cc6733119cf28329e39643c53c8782ac8783a92f15c43c6f32c194f2919cf1d643cc3c878c691f17423e3e940c6339d8ca73f19cf8d643c6f92f10c22e3a921e3994dc633898ca73319cfe3643c5791f13c49c6731b19cf7d643c63c8787a90f13c44c6b3988ca71f19cff5643c03c978aac9786691f14cc80e4f997ab75dde9d0c800ba74ac8af049e371de8e3a89ea5f85d83af635cafd2ea6d43aba58656c5506605e8f7b603fd0ac0afac5be6c55f2e322b1e39a71356fc0ec493248c627bd32d4f72bf7d32a83fa5db6fdf061e17ed9aa37a26f7afd5469d9eb4e82e653056573ba8a76ddf91f9d5b01d728d59f13ca3f3c29a8072cf90308a6da55b9ee4fef54c507f4ab77fad061e17ed8fa37a26f7af35469d9eb1e82e653056d738a8a76ddf91f935b01d728d59f13cabf3c29a8072cf92308aed6db73ce509a8b34ce9f6af35c0e3a2fd7154cfe4feb5d6a8d3b316dda50cc6ea5a07f5b4ed3b32bf16b68367f6cc3666c5237db1853501e56690308a6db5539ef2d204d459a674edd85ae071d1ce3bd23dd98ead33ea34c3a2bb94c1585de7a09eb67d47e6d7597c9704f16ab1be015aacb7f0accfb216e22f53e61539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5cca0b3e291b111853501e56692308a6d8d5b9ee47b413383fa5381315f09f9f5c0b3d6813e8eea99ec43bec1a8d34c8bee5206f7af0d0eea69db77647e036c874c98d7e520b3d7b971cc8a6796ce0b6b02cacd226114db5ab73cc9766c56507f4ad78e6d001e17edbca37a26dbb18d469d6659749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3755e5813506e3609a3d8d63be5294bbedf383ba83fa56bc736028f8b76de91eec9766c9351a7d916dda50cc6ea2607f5b4ed3b32bf09b64326cceb7290d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a678ece0b6b02cacd216114db06a73c5d92cf1de604f5a774cf1d3601cfc6d87952cf1d1ce89e7ceeb0d9a8d31c8bee5206f7afcd0eea69db77647e336c87a6cebc2e07997d6c6487d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f1ccd579614d40b9b9248c62dbe89627f9dd83b941fd295dbf9dcdc0b3c9813e8eea99ecb7b3c5a8d35c8bee5206f7af2d0eea69db77647e0b6c07cfec996dcc8a679ece0b6b02cacd236114db26b73cc9766c5e507f4ad78e6d011e17edbca37a26dbb1ad469de65974973218ab5b1dd4d3b6efc8fc56d80e9ed933db9815cf7c9d17d604949b4fc228b6cd6e7992edd8fca0fe94ae1ddb0a3c2eda7947f54cb663db8c3acdb7e82e653056b739a8a76ddf91f96db01d3cb367b6312b9e053a2fac0928b78084516c5bdcf29425a0ce32a56bc7b6018f8b76de513d93edd876a34e0b2cba4b198cd5ed0eea69db77647e3b6c875c63563c0b755e5813506e2109a3d8b6bae549ee5f0b83fa53bafd6b3bf0b8687f1cd533b97fbd63d469a145772983b1fa8e837adaf61d997f07b643ae312b9e453a2fac0928b78884516cdbdcf224f7af4541fd29ddfef50ef0b8687f1cd533b97fed30eab4c8a2bb94c158dde1a09eb67d47e677c076c83566c5b358e7853501e51693308a0d8f178b1df1141b3cc5162d8e946f35df5be78bf46f02fedf1b185db5878b0d4699c718475ed79ab536785a1b9a1d49dfaafe153a7facfec5ed55018c0cdbab7516346b63f0b431343b92be95167d74fe38fd8bdbab0f30326caf36c0e3a07d2e4f183c6a4a77beb1c3b13e8eea993cdfd819d875c7e39094c163f74e07f5b49d4bc8fc4ed80e9ed933db9815cf009d17d604941b40c22836bc4ed9153f4f79c2e05153ba766c97637d1cd533d98ebd1bd875df05ba4b198cd5771dd4b300fccaba65fe5dd80e9930afcb4166af73e39815cf409d17d604941b48c228b69dc0f35efc3ce50983474de9dab1f71cebe3a89ec9766c7760d7fd3dd05dcae0feb5db413d0bc0afac5be677c376c884795d0e327b9d1bc7ac7806e9bcb026a0dc201246b1bd0b3c7b62e7498d07843c6a4ad78eed71ac8f9b7aa6dab1f703bbee7b40772983fbd7fb0eea59007e65dd32ff3e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a67b0ce0b6b02ca0d266114db6ee0f920769ed47307e45153bae70e1f38d6c74d3d53cf1df60676dd3f00dda50cc6ea5e07f52c00bfb26e99df0bdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219a2f3c29a8072434818c5f63ef07c183f4f79c2e05153bae70e1f3ad6c7513d93cf1df60576dd3f04dda50cc6ea3e07f52c00bfb26e99df07db619f67f6cc1666c53354e7853501e58692308a6d2ff0ec8f9d27f5fc1479d494ae1ddbef581f37f54cb5630702bbeefb41772983b17ac0413d0bc0afac5be60fc076c884795d0e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d8f601cf47b1f374294d183c6a2a30e62b21ff91637ddcd433f5dce16060d7fd23d05dcae0fe75d0413d0bc0afac5be60fc27668eacceb7290d9c74676987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308aed00f07c1c3f4f79c2e0515381315f09f98f1debe3a89ec97e3b9f0476dd3f06dda50cee5f9f38a86701f89575cbfc27b01d3cb367b6312b9e1a9d17d60494ab216114db41e0f9347e9eb284c1a3a674edd8a78ef57154cf643bf65960d7fd53d05dca60ac7ee6a09e05e057d62df39fc176c83566c5334ae7853501e54691308aed13e0711077499e628347e63f25f0ade66b75be48ffe2f6aa054686ed559c05cd5a1b3cad0dcd8ea46f55fff13a7facfec5ed351e1819b657eb2c68d6c6e069636876247d2b2d26e8fc71fa17b7d7046064d85e6db2a0d9916c0f8fe4be7d24e3d46b7ee4342f38829a171c41cd0bbce6549a3b38be94e1b12c00069c2a21ff19f07c3b7e9ee47db9cf32e0f936f07c2b7e9ece8eea59aad6fb1d608f6bbd4aabef1a5a7d6668550c6590e1bb0ef42b00bfb26e99177f9ed9334731e3b9adb026a0dca7248c62fb16f0b8683754dd3be875c9fa5b84e9cb13ebfcba785e82f78a5be8f50a87f82b8432d34aeacafe59b315c1ff65bba9fa1c346c8ede61ee6c7b6e27f3e2af28c8dabddbb4f792510b17cf9b323dee1fb4f07c1d1f4f29eee7e8eb80a3ba67f2ecef808527c6ba778e7aeeb93ffeba27db8f8e7a5db27eb58ffed7894e352fc77d4fda8f8e469d0ba1cc8092bab25f43fb616b2b5cef9b724e6eee9bcd82baf64cb84ab4dd7c26f4b5b64bb98fa13cb639bdf52fee9fbda1aeaedac5a87b4cd82e9a6db74bedcde792a6ef62d0e56352cd6ccf2950c70a0b77050137c66336f73359b7ed195985a1239b66b8ad3fb6e8d8c7c2dd87809b71bfee63e8c8a6d9e1f6eb0116ee0104dc8cfbf500434736cd0eb75f0fb4700f24e066dcaf071a3ab26976b8fd7a90857b100137e37e3dc8d0914db3c3edd7832ddc8309b819f7ebc1868e6c9a1d6ebf1e62e11e42c0cdb85f0f317464d3ec70fbf5500bf750026ec6fd7a68505f4736cd0eb75f5759b8ab08b819f7eb2a434736cd0eb75f575bb8ab09b819f7eb6a434736cd0eb75fd758b86b08b819f7eb1a434736cd0eb75f8fb2708f22e066dcaf1bda6f9f75bfaeb570d7127033eed7b5868e6c9a1d6ebf1e6fe11e4fc0cdb85f8f377464d3ec70fbf5040bf704026ec6fd7a82a1239b66b6fddad1bb8419bfdbf889537d52634c7f9201cf47c0e322a61cc541a9a37e2ec9bea9fb0dad3e31b4c2b13b0e807e0efac2a4fd2681f8f3cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccf8cdf65c4e72b52ee631246b1e1332917f7f955dd3be975c9fa5b8469c0c9757e0fc4eeb7acb4c0f057091ce2af10ca9c7b4e5dd9bb355b5170e876c3b1b8715bee8bbd0ea96d69c6bfcc8bbf22a8cf7ee071f07e7e92e780c173c0a205be771a8fefb2e16e342e2b55dfc73b3aa8dbcefb8cfaa0a61fc6eebfbea60586a61f3af69d08ea6f4f61c0a912f2c8e3e2d9b0a37a26db82bd469d4c8d8ba14c3ba8e75e07f52c00bfb26e99df0b3c32e13379573118183c81451f999a91f15493f10c24e3399f8ce77a329e53c978fa91f13c44c6d3838ce768329e31643cf791f1dc46c6730e19cf55643cd93807cf84e771329ece643c2790f14c22e32924e3a921e33948c633888ce742329e1bc9782e25e3399d8ca73f19cf74329e6e643c1dc87812643ce3c8788691f1dc41c6534ac6d3968ce71a329e93c8782ac8783a92f14c21e36949c6338a8ce762329ec1643c1791f1dc4cc6732619cfe5643c8f90f19493f11c4bc6d39a8c673c19cf70329e3bc978ce23e3b98e8ce714329ebe643c53c9787a92f1b422e3b99f8c670819cfad643c6793f15c49c6730919cf63643c65643cc793f14c24e3694ec633828ce76e329ef6643c1790f1dc40c6731a194f2519cf34329eee643cc790f18c25e3194ac6733b194f0919cfd5643c4f90f1f426e339918c6732194f0b329e91643cf790f1b423e3b9898ce70c329ecbc8781e26e3e94ac65344c6534cc6534bc65345c633808ce75c329e6bc9784e26e3e943c6f320194f2f329ea3c8784693f1dc4bc6730b19cf59643c5790f17422e3398e8ca70d19cfa3643c5dc8780a087812c1a1df624ac0ff0f804dbe19f411d89a59d627cf61a5bc3a2eae6d7be8ba9b59d6fda1850175fa00ea52a9f3a5df6c4aea84be2a615efc1501c787243c5dc8781e25e36943c6731c194f27329e2bc878ce22e3b9858ce75e329ed1643c4791f1f422e379908ca70f19cfc9643cd792f19c4bc633808ca78a8ca7968ca7988ca7888ca72b19cfc3643c9791f19c41c67313194f3b329e7bc8784692f1b420e3994cc67322194f6f329e27c878ae26e32921e3b99d8c672819cf58329e63c878ba93f14c23e3a924e3398d8ce706329e0bc878da93f1dc4dc633828ca73919cf44329ee3c978cac8781e23e3b9848ce74a329eb3c9786e25e31942c6733f194f2b329e9e643c53c978fa92f19c42c6731d19cf79643c7792f10c27e3194fc6d39a8ce758329e72329e47c8782e27e339938ce766329e8bc8780693f15c4cc6338a8ca72519cf14329e8e643c15643c2791f15c43c6d3968ca7948ce70e329e61643ce3c87812643c1dc878ba91f14c27e3e94fc6733a19cfa5643c3792f15c48c633888ce720194f0d194f2119cf24329e13c8783a93f13c4ec6b39f8ce72a329e73c8786e23e3b98f8c670c19cfd1643c3dc8781e22e3e947c6732a19cff5643ce793f10c24e3a926e36946c633c1e0c1ffab77c3e4fc48be1d5408ff9fae3b97b7d6eb9232f28e92bad7f5be6153f5dde3a8beef07755325ccef81fa0afbfbc0f3be239e0f0c1ed37711e42b40b3dd864d31bee78871b7c128f3ef01a3e8b71b78763be2d963f098be8b20df07347bd7b029c65d8e18df3518657e17308a7eef02cfbb8e78de33784cdf45901f009aed346c8a718723c69d06a3ccef0046d16f27f0ec74c4b3cbe0317d17417e2068f68e61538cdb1d31be6330cafc766014fdde019e771cf1ec30784cdf45901f049a6d336c8a71ab23c66d06a3cc6f0546d16f1bf06c73c4b3dde0317d17417e3068b6c5b029c6cd8e18b7188c32bf191845bf2dc0b3c511cf5683c7f45d04f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37711e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf4590af02cdd61936c5b8d611e33a8351e6d702a3e8b70e78d639e2596ff098be8b205f0d9aad316c8a71b523c63506a3ccaf0646d16f0df0ac71c4b3d6e0317d1741be06347bdbb029c6558e18df3618657e15308a7e6f03cfdb8e78561b3ca6ef22c88f02cd561a36c5b8c211e34a8351e65700a3e8b71278563ae25965f098be8b205f0b9a2d376c8a719923c6e506a3cc2f0346d16f39f02c77c4b3c2e0317d17417e3c68f69661538c4b1d31be6530cafc526014fdde029eb71cf12c33784cdf45909f009a2d316c8af14d478c4b0c46997f131845bf25c0b3c411cf5283c7f45d04f9dbc126bcbdc0f686cef704dbeb3adf036cafe97c77b0bdaaf3ddc0f68ace7705dbcb3a5f0eb69774be0bd85ed4f932b0bda0f39dc1f6bccef705db733adf0f6c8b75be126c8b74be3fd816eafc65605ba0f397836dbece5f01b6793a7f25d8e6eafc55609ba3f357836db6ce5f03b6593a7f2dd866eafc75609ba1f3d783ed599dbf016ccfe8fc8d607b5ae76f02db533a7f33d89ed4f95bc0f680cedf0ab6bb74fe36b07da2f37780ed539dbf136c9fe9fcdd60fb96cedf03b66febfcbd60fb8ecedf07b6efeafc30b07d4fe78783edfb3a3f026c3fd0f99160fba1ce8f06db8f74fe7eb0fd58e7c780ed273a3f166c3fd5f97160fb99ce4f04dbcf757e12d87ea1f393c1f64b9d9f02b65fe9fc8360fbb5ce4f05db6f74fe21b0fd56e7a781ed773a3f1d6cbfd7f987c1f6079d7f046c9febfca360fb42e71f03db973aff38d8fea8f34f80ed4f3a8f63ddfe59e74b8278dbd9af82baa9047c8b3f55e62f3adfd22823cb1642998eba83a37ac6a1be652aedb0b4cbca26edf01b609376f875b0493bfc1ad8a41d7e156cd20ebf023669875f069bb4c32f814ddae117c126edf00b609376f879b0493bfc1cd82a757e31d8a41d5e0436698717824ddae105609376783ed8a41d9e07366987e7824ddae1396093767836d8a41d9e0536698767824ddae119609376f859b0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c30f804ddae1bbc026fbcb576093b6f913b049dbfc29d8a46dfe0c6cd2367f0b6cd2367f1b6cd2367f076cd2367f176cd2367f0f6cd2367f1f6cd236ff006cd236ff106cd236ff086cd236ff186c6375fe276093b6f9a76093b6f9676093b6f9e76093b6f9176093b6f9976093b6f9576093b6f9d76093b6f9376093b6f9b76093b6f9776093b6f9f76093b6f90f6093b6f973b049dbfc05d8a46dfe126c4fe8bcb4d5adc026cf8ad554fa0d271c8707cff985a93288b7edc7a912f28f43dd656a46c6f31c194f3519cf40329ef3c9784e25e3b98b8ce768329eb9643c2f93f1e0b18981671d19cf5a329e9d643c3bc878ce21e3d94fc67302194f2119cf22329e1a329e37c8780e92f10c22e3b9908ce752329ed3c9783e21e3e940c69320e379918c673619cf1a329ed5643cef90f16c27e32925e3694bc67312194f05194f47329e96643c0bc8784691f1bc46c6733119cf60329e8bc878ce24e339968ca73519cf4c329ef1643ccf93f1bc4dc6b38a8c671b19cf56329ef3c878f692f17c40c6730a194f2b329e79643caf90f10c21e3399b8c670919cf25643cc793f13427e3594cc6b3928c670519cf9b643c5bc8783693f1b427e3b9808ce77d329e3d643ca791f11c43c633878ce725329ea1643c25643cbdc9784e24e36941c6b3908c673919cf32329ed7c9783691f16c24e3f98a8c673719cf7b643c6790f11491f11493f1cc22e3a925e379818ca78a8c670019cfb9643c2793f1f421e3398a8c673e19cf5b643c4bc9785e25e3d940c6b39e8ce75d329e5d643c6791f17422e3398e8ca70d19cf0c329e02029e0470046093ff3707db973a7f106cf2bd9efd60fb42e79780ed739d7f026c8f5a6ccd2c7cc2f025d8e4dde6c7c026f73fbf009bbc13f039d8e4bc4afcabf9ad6d0fe56f06cb889fe6167ef4f7b9854bf2b8bd6599ca20deed8dbe2a8343bfa754041c8f91f0cc20e36943c6731c194f27329eb3c8787691f1bc4bc6b39e8c670319cfab643c4bc978de22e3994fc67314194f1f329e93c978ce25e31940c65345c6f302194f2d19cf2c329e62329e22329e33c878de23e3d94dc6f31519cf46329e4d643caf93f12c23e3594ec6b3908ca70519cf89643cbdc9784ac8788692f1bc44c633878ce718329ed3c878f690f1bc4fc67301194f7b329ecd643c5bc878de24e35941c6b3928c6731194f73329ee3c9782e21e35942c6733619cf10329e57c878e691f1b422e339858ce703329ebd643ce791f16c25e3d946c6b38a8ce76d329ee7c978c693f1cc24e3694dc6732c19cf99643c1791f10c26e3b9988ce735329e51643c0bc8785a92f17424e3a920e339898ca72d194f2919cf76329e77c8785693f1ac21e3994dc6f322194f828ca70319cf27643ca793f15c4ac6732119cf20329e83643c6f90f1d490f12c22e32924e339818c673f19cf39643c3bc8787692f1ac25e35947c6f347329e97c978e692f11c4dc6731719cfa9643ce793f10c24e3a926e3798e8ca71919cf040bcf12473cd27745d62df34b9ab8ef3d86ef3d79e2fb3dc3f77b79e27b97e17b579ef8de61f8de9127beb71bbeb7e789efad86efad79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e65f85e9527be5718be57e489ef6586ef6579e27ba9e17b699ef866befe56df79926f41ecd5bf09f83f8e1fb7df11e3128351e6f703a3d870fcf7de8e78a2aedd7b13f8565a48df4579873e01ffaf00465731d5db6094795b4ce178a3158e78a2ee395410f8565ac8b71ce59b5809f83f8e9fe22aa62a0c4699b7c5148effd5c7114fd4bd923e04be9516f22d47f9067002fe8fe313b98aa93e06a3ccdb620ac79b18e08827ea1ecf0002df4a0b791623cfcc13f0ff81c0e82aa606188c326f8ba91dc033d0114fd4bda98104be9516d2f74cfa2c27e0ff8380d1554c0d341865de1653db816790239ea87b6a83087c2b2de4dd2879873501ff1f0c8cae626a90c128f3b698da0a3c831df144dd0b1c4ce05b693144e7e51b3909f8ff1060741553830d4699b7c5d466e019e28827ea1ee61002df4a8ba13a2fdfe04cc0ff8702a3ab981a6230cabc2da6703cdfa18e78a2eebd0e25f0adb4a8d2f90dfa3701ffaf0246573135d46094795b4ce1786d558e78a2ee195711f8565a48df18e9339880ff5703e350478c5506a3cc0f0546b1ad059e6a473c51f7baab097c2b2da4affb1afd9b80ffd700a3ab98aa361865de1653ab81a7c6114fd43dfa1a02df4a8b513a2fdff048c0ff4701a3ab98aa311865de1653ab806794239ea8670ba3087c2b2d64ec03f9265f02fe8fe365bb8aa95106a3ccdb626a05f0d43ae25966f02cb36871a47c2b2de4db2fcbf56f02fe3f1e185dc554adc128f3b6985a063ce31df1443dcb194fe05b69217d3bdfd2bf09f8ff0460741553e30d4699b7c5148ebf3cc1114fd433a80959f01df53c251bbea39e0d64c377d47dee6cf88eba679b0ddf51f71fb3e13bea5e5a367c47dd17ca86efa87b1cd9f01d75bd9e0ddf51d79ed9f01d751d950ddf51d704d9f01d757e9b0ddf51e76ad9f01d75dee1db73df9ec7edfb489e3be46b7b7e248fa147f258e2af0dfcb541b67cfb6389bf36c896ef7cbd36f0ed79f6db73b9fe2a08a2afc75639f2bdc2f02df3f89c658523dfcb0cdf328fcf0c9639f2bdd4f02df378ff7ba923dfc5866f995f9a05dfad0ddfadb3e8bb8de1bb8dc5b783ed5d9608ea5f7f0b034e9590c71878cb81168eea59aad6bb5cafebeb18d76bbb6f63ee2fc5506639e8e7baed90759b6d472e32635c14c4e7bb34013e649c3b6593e7c76f804ddafdd7c126fd025e039b1c9b5e059b3c937a056cf2ccea65b08dd2f94fc026cf8eb1cfbe3cffdf05b62a9dc7bee243757e07d8a42f15f65196fe70dbc1267d1ab16facf44bdd0a36e95b8c7d32a57ff866b0491f7fec0b28ef696c049bbc6b837dd0f6ebfc7ab0c97735b1efd3173abf166c5feafc1ab03daef3abc1f688cedf05b63fe8fc57607b58e79782edf73aff16d8a6ebfc72b0fd4ee75f02db6f75fe45b04dd3f917c0f690cee3bb6cbfd1f90fc03655e7f11daa5febfc1eb03da8f3f8eeceaf74fe3db0fd52e79f07db149d7f0e6c93757e31d87ea1f38bc03649e71782ede73abf006c13757e3ed87ea6f3f3c0f6539d9f0bb6713a3f076c3fd1f9d9601babf3b3c03646e76782edc73a3f036cf7ebfc1fc1f6239d5f06b6663abf026c322622f65391ef7cae029b8cf58dfd8f64fc8309603b4ae7c783ad95ced7824dbe0d370a6c32be700dd8123a5f0db6229daf029b9c9f0d059b8c0f33046c722e35186cc7e9fc20b0c979cf40b0c9788d03c026df20ed03361987bc026c32f6406fb09dacf34bc02663b2ed079b7c27ee20d864ece32fc026df87fe126c67e8fce36093716a1e01db593aff07b09dadf30f834dbe29fa7bb095e8fc74b0b5d5f9df81ed5c9dff2dd8644cb3696093efd03d0436193bf8376093ef3d4f055b3b9dff35d82ed2f907c12663bffc0a6c32fee52fc1d65ee7a7804dbe7b3d196c1d74fe176093f1382681ad93ceff1c6c32eec244b075d6f99f81ad4ce77f0ab62e3a3f0e6ce53aff13b075d5f9b160eba6f363c0d65de77f0cb61e3a7f3fd87aeabcb4336a7f56fbf9013d5f19c4775ea6fc7d14d49fd25d1b0803f2c479ae5d0c3ce86b5fec752f4b9ed74b5bd04caf5762681ff8de1bbbefd435c5877a5d857abd7b0ddf8550a654370e6a3939e637d7cbed3796c3fb58b26e59a613d83f30d6dd5ad7f74347f5dd6b300937ea2065ca35933a36fe42e71dbdc39fbc3e96580b40439c2a212f0c6eb42a2bc573e186f07c083cfb62e7495dafbb8809dcb7e2be5e37efe39ab1560c65f6827e1f38d00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ae780cee3b36629778084516cfb80c7c57d7e7c0e2beb57cf753e3ea7ceefbed8fdd67fbed742afb7d4a873219469595257f65b9a0dc71e95ed16b52d1d3c274cbb2dc55f11d4079f051d70c4b3cfe0d967d142f225b1f92e1bee46e3b252d597453d63df6fe87ac0a2a9abfd759f5e5781a129eeaf1f193cf86cb408783fd6bf0958cfc7500707fb78dab8107fb82fed039be43f024617db198f25d21ec8f3707c362d65be309e8bc7bfedcb4a5db61bef439d2a8343e3bb10cafc199eb7ff55e7b16fc801d0ed7f5bfe2f53bae7d4a29faaf3eef8eb9cdcbeef016725f841dfef026b4cbeebbd4353a093f8117b21e4ff17f4e79072a287682dec6a1f913e9dc86e2ef791b15c3194d963a97f65106ffd771b3cbb0d66b54dfe0171f6bfe1f8efaa4dda13a15127d048caec038df63be2d967f00887f8536564fbb734cac8b28550e6bfa18d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf81870721defbed87973abff57eb92d42fb6eb71f5ff9275b7d6cb0a4760acbf14d62f5c2d83e8638b9439a1a46efd2efb97ed37ea2c2ca8b39439a524f5abe2ec269dcfe45cff485db7459debef71c09308ea5f7bab29ddf11d8f31ef3be07154cf52dbb1eb03a34ec550a61dd4d3c1794cda778177836f17db1cb59073a8bd86168550e6e292d4afb41d513ae2b5ea8759a94b99f57cb0d4521729d3a9a4ae2eadc01e2793cbedf62ed449ad779fa5ae52a6bca44e976e3a9f80ed84f74daeb4fc5fa674ed018ec5b333fe3a27b7ef0ee0ac043fe8fb1d608dc977bd6f81c8f9bef8117b21e4af28a92b2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3cb52ffca20defaef3478761acc6a9bf42ca9cb4b1cb96c37774568540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452e6f692d4af6a671396b2e6bd6117f731f1ddd200ea111875950963c0c1b561395e3b493b257e3a827d9fce8bce1d0ded0aa1ccbd25a95f87e7ddd67b97e6f51d5e5308b7b96fe1bb1f552575dc2aee653bedd3bf4560fb54ff3aba4e2bb7dd33140edb3dc3512575ecb8ac707d62a98b798ddc2c38f49efad74659bcef966e39f4a5a683c6324adf4f2d4cfb0c3fad60d9d8ded5e85c5a1ac57f10f83e32986dbaca7e8031b74fe7cd7d05af8da5ccd492d4afb4496659b5edffebc43a7d643b8a76d89e604c7e048c953a5ffacda6e43e77d0a8bfcc8b3fc528f77b0e024ffc6d57ea7da54cee03ef071e176dbba336ba148fb1ad625b6fcf2adbf1ff2343ab2c3eafb51ef3cd67eead8c7c3cbecbaa6df79f6c5aecb5f0b87a8e12a5c55e8beff8b4e836dcd6ced9b4c866df87282d3eb0f88e518b1abcef994e8bf72d3c2eee45a5d3e27d8beff8b4e85e9aeeb9066ab1c7c2e3eade439416e22f53e60f08985b19f9787c9757d9ee93d9b4d86de17175dd1ca5c56e8beff8b4e8dc0defd1a5d3e23d0b4ffcf7e7d26bf19ec5777c5af4e889f7f0d269f1ae85c7d533dd282ddeb5f88e312e46d8eee5d8b4d865e1d995652d76597cc7787ed8cd76afcda6c54e0b8f83fbae69b5d869f11da316c3f0be6b3a2d7658787664598b1d16dff16951d5d5764fd8a6c53b161e57f784a3b478c7e23b3e2d86f550beb737408bed169eed59d662bbc5778cd750c9b8d8d6002db65978b665598b6d16dff169519d3cd7dada002db65a78b666598bad16dff169519a3ca66e6980165b2c3c5bb2acc5168bef18e322793db9b9015a6cb6f06cceb2169b2dbe633c8e24e3625303b4d864e1d994652d36597cc7a7454df2fed3c60668b1d1c2b331cb5a6cb4f88ef19e4b322e3634408b0d169e0d59d66283c5777c5a74491e53d737408bf5169ef559d662bdc5777c5a8c483e135bd7002dd65978d665598b7516df319e7726db8bb50dd062ad85676d96b5586bf11de37967f2fec59a0668b1c6c2b326cb5aacb1f88eb1ed4c9e77ae6e8016ab2d3cabb3acc56a8bef18cf3b935abcdd002ddeb6f0bc9d652ddeb6f88ef1bc33791c59d5002d5659785c8d8112a5c52a8bef18e322d976ae6c80162b2d3c2bb3acc54a8bef18ef6b25dbce150dd0628585c7d5780d515aacb0f88ef17a24798f6f7903b4586ee1599e652d965b7cc7f8ac28790ebeac015a2cb3f02ccbb216cbc0f7fed87da7fa738b0fe98bd5c1d0a210ca5cd836f52b7db1a274947560bf32accb5bb1d725d5af6c69445dde82ba48994ba12ead02276314953baa6b326696409dd47a3fb6d455ca746e5ba74b179d4fc036f90474bbccf27f990a8cf94ac88b7eaace6fc45fe764acbe0e9c95e0077dbf06ac31f9ee8cbe0b74123f622f847cffb67565a59ce8215a0bbbda47ded4796437975b662c570c65deb4d4bf3288b7fe6f183c6f18ccc9f71e20ce248edcb45d29a6372334ea001a4919ecb3f7b1231eb30fa170883f5546b67f4ba38c2c5b0865ae83360afb954a3d13c1a1fd261db5659d915dd62df3e2af186cfb81d1aca38a8f2fa1efa78c1521e348289b8c0bd105d6d3ddb0a9baf6705457f125eb96f91ec028e35474cf3e63594319bb198c8aa79703cd70ec0d99d21d2f7a014f4f073c8eea993c0ef536ead4c3a8533194c1771b7b3ba86701f89575cb7c6ff0ed629ba316724cbed8d0a210ca8c32ce1fa3749475a8f8ed6ea94b5fc77591754bbbd4370bbe2b0cdf5d0ddf89a0fe760e82f4fb570530f771c0acd6db2ffef596e2799bc494f8e90a75ea0f1ac455275c979ce7f537b42d84fca3709e27e5a4ac1cbf845dc5b26c4b643797eb652c570c65fa5aea5f19c45bff7e064f3f83596d9389706ee7607f48c6405f8343e6bb8276fd22b4eb0bda49193cfe7577a45d1f83a78fe15bf1c8394e6fb0c9b982f027e0ff5db2c06db67bbd2ddc62c371e26ce73adde2674c7baed30d18c5d607782a1c69666eeb8b0d7df0b8dcd22823cb164299e7e0d898b09455fb5dbb82ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6382bab11a274dae9d386ce488db46a41e3d0a5aa18189bf05966a34031be69b5b6c41507f48ca42b0c990942dc0d6cc900587c294f232a49d0bb9500f5977a1c1d90a58e2f48dc379ca942e748e021e17a1ac424786f4d4a173d7c4d19347607cb430381b133bea7fcdd3948b5a97abed60ee1395306fc660a123ffcda1be95302ffed4b629d6f9f1c3863fd07fe2c82963478c9b3c098532776ccc1704f53780f91b25b8ab9d0e03002b8c8d430ba35ed860c8ff64c31c133f67398e996b6a13803f998e01dd8e76a09b5abf8c7d3b7cd89831b74ca91a337af85553c60d9f3cba761c6ecd568672515b5afedf126cb6261ecbaa099b2d5cf6288bcd36e128c3adc02647aea3c1263cc780ad39e4a5bcb9659c846b3b58bfec52ea7f4a9c16bae247057521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e3d480d1dac860a3e2b480d05acbe765112a486f63d37480ddd7b7e901a9af742e0fb36305f14a44ebbd4d0baed83d4d0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a49fd6ba7f982e0bd3e561ba224c5786e9aa305d1da66bc2746d98ae0bd3f561ba214c3786e9a630dd1ca65bc2746b986e0bd3ed61ba23480def7c67901a7e5d0dff7c77901a1afa9e20356cf4bd416a48e9fb82d470d3c382d450d4c383d430d52382d410d62383d4f0d6a383d4d0b90f04a9a176c706a9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f2f420350cb31ab2f9d1303d16a486747e224c4f86e9a9303d1da667c2f46c901a1e5c0d1b3e2b480d33ae861f9f1ba4862b9f1fa4863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f394caf84e9d520f548423d8a518f28d4ed7ff5184cdda27e2b48dd3a5f1ea41e71ab47feaa0b84ea12a2bac8ac09525da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aaf705a9dbe20782d4a352753b5c3d1a50b7ccd5edfbcfc2f4ad201593df09d377c3f4bd307d3f4c3f08d30f83d410c66ab863355cb21a5a590db9ac8667564339aba1a0d510d1bf0e52434faba1ab7f17a486bffe43983e0f5243707f19a4865fff5398be0ad39fc3f49730fd354c7f0bd3dfc3f48f30fd4b98fe354cff16a67f0fd33f83ba61b6b121395db73efa0a26183679f288b1e327974cae2d193b65cce4d1e3c74c2b993a7af2a892da07474cac19533b1517feb65e58c608ef3f71e2b06925a3c7558f78a8a476cae492da9a92aada29e3aaeb1dc4ffaa173af3508fc3aaaba39dfdc73721fdbf8d747ab46e1765f4f56bd3d7ada879230439be310b756bdeb80a4dd74730b9d4bd3d751e5c32694cede492d29271e1dff0c05b3b754475c712fcdfa450e449934b264d1e36717249cdc4dab1259d3be27a671cd3884a1424dcc07438bd71e274d2df596a54887d7e4e2314f8fa9cc6911e5bf20d488f2f699cd38b4a1a51c38e8d59e8b646120e2e899465d294aac913870d9f1cbdf0b06fb2f0c8c654f3c14656f382b68d70d6be310b5ddbb67184231be36c7106ce82ff0f62e9a0d2d4560600", "isInternal": false }, { "selector": { "value": 2603445359 }, -<<<<<<< HEAD - "bytecode": "0x1f8b08000000000000ffed9d777c1cc775c7f7d0580e471024c15ea046b3828743071bd83b654ab27a214882222d92a048a859962559927befdd728be5de7bac543b8913278e1dcbbd57c945f927713ec9e7e34f66f6e6193f0c77cf38681ff816f7f6f379bcd987b97ddff9ed9bd9bd99bde39341106482e2566deca2e0dc8dfedee75ef34f6d6b4df058794ece4c4a38ab52c2599d12ce9a9470d6a684b32e259c9352c23939259c5312e4b46c55c1c82d69dea90cba26cd984d99a6f529d03497324da7a540d386201d63d4f4947036a68473464a3867a68473564a389b52c2393b259c7352c23937259cf352c2393f259c0b52c2b930259c8b52c2b938259c4b52c2d99c12ce0b52c279614a382f4a09e7c529e1bc2441ce95c0b9d4bd3ecdbd2e73afcbddeb0af74aef59e55e57bb36d6b8fd16636b2c9bb156ef6f05636dc6da8d75787feb34d665acdb588ffb5bb3fb5bafb1b5c6d6195b6f6c83b18d4e874dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d8d38d1d307699b1cb8d5d61ec19c6ae347695b1ab8d5de3b15c6bec3a63d71bbbc1d88dc66e3276d058bfb143c60e1b3b626cc0d85163371b3b66ecb8b1671abbc5d80963278d9d323668ecb4b15b8d9d3176d6d890b1db8cdd6eec0e63771abbcbd3ec59c6ee36f66c63f7789ccf3176afb1fb8cdd6fecb9c61e30f6a0b1878c3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b1d0b7584b7197bbbb1878dbdc3d83b8dbdcbd8bb8dbdc7d85f187bafb1478cbdcfd8fb8d7dc0d8078d7dc8d8878d7dc4d8478d7dccd8c78d7dc2d8278d7dcad8a78d7dc6d8678d7dced8e78d7dc1d85f1afba2b1478dfd95b1bf36f637c6fed6d8df19fb7b635f32f66563ff60ec1f8dfd93b1af18fb6763ff62ecab9ee6ff6aecdf8c7dcdd8bf3bdfd7ddeb375c5d9a17fb0f63df74e5c7dcebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef571f7fa847bfd8d7bfdad7bfd9d7bfdbd7b7dd2d8d54dc5f2e46078eb0b121aa3da8fe6ed9a0a89bf3418b9592daadddfe8b5d9f96bdc3ebd9276b56ebfd6f3d7b9fd3aef3893ddfe64cfdfe8f61b3dff4cb73fd3f337b9fd26cf3fc7edcff1fc17bbfd8bc19f0d60ced5f9adafdab932e0a37cad025fadf35583af8e0e07be49ce570b3e3abf75e09be27c93c037d5f926832feb7c53484b63f5ced71724952bf97e7bdc5cd2c775eb50d392e73d6c8fdbc0c43b3d79de017bdc46065e9b1f33dcb1a643decc74be46f0cd72be19e07343d09ffa9cf5cd76be59e09be37c4de09beb7cb3c137cff9e6806fbef3cd05df02e79b07be85ce371f7c8b9c6f01f8163bdf42f02d71be45e06b76bec5e0bbc0f99680ef42e76b061f3de37201f82e76be0bc17789f35d043e1a6b2f061fdd1b5ee27c769c989c81f7383f8d51e17b687c06df321a9bc1b79cc665f0ada031197c2b2136f956c1b842bed5ce476394fd5baf2bf70549f58942d827d6267d5c73647bdcf5c91f375cb7db100c6bdd0771d682561b5d39c167835a3176c619c5217f0d9477415daa477ad07586d8edf5649d2b6f2cf1be5eef7d39a8b32ea2fd7d41b2ed5feff1acf7986ba1fd3c39db56d09c1df55676ce5e0575fddca37b9e8998b37b818321673b356747bd959db30350d7cf3dbaef9d88397b2d7030e46c3f4fce16f29ab3c539b22088ce3dfaec331173f61870249fb31d9ab3a3dfcaced9fba1ae9f7bf4f97722e6ecedc0917cce76f5ebbdc1a8b7b273f6e550d7cf3d9a8b998839fb207030e4ec808eb3a3decaced9b7425d3ff7685e7022e6ecab8023f99ced61cad936cdd9a0b8de1904d1b94773d41331671f068ee473f6b0cecf8e7e2b3b673f0775fddca3f5928998b31f7665bbcef075b7ceb0107cdf70be45c09b7c6e1f6967caed82e676f139902088ce515abb9b88b9fda82bdb3c7e0c9e3d20dfb79cef02f07ddbf92e04df779cef226817431fe8d73e30eaadec3ef03da8ebe732ad234fc43ef035e060c8d9c39ab3a3decaced9c7a1ae9f7bf44cc344ccd91f020743ce0e68ce8e7a2b3b67ff0075fddc5be6ca133167e9b9527bbff06377bfb0027c3f71be95e0fba9f3ad02dfcf9c6f35f87eee7c2de0fb85f3ad01df2f9d2f0fbe5f395f2bf87eed7c05f03dee7c6de07bc2f9dac1f71be7eb00df6f9daf137cbf73be2ef0fddef9bac1f7a4f3f5389f5defa267afbee27cf6dc92467d41b2e7969eb1a463d3feaa7188dde0c56e18c7d88d5eecc688d8ab19626721066d196fbf0fcaab7979f2b960e4f73f28d69ae463b5d9b6b704a36ffb1ae0c933b43d0b3146c393079ed6e479c2677d0bc91f373cc72d9ea65988d502ed6a6368570662d1b1699fe2e5c087e3775b04637bf28c850cc4a263d37e3b30920faf27745da7fe63af874b33c3bc0c7d29bc27a278f4db5fc4b106fc54e7bf670db3ad706cf5f077bcb6b67a3ea6bc0cf38262d1b1699fe2d5437b5ac79fb1305ac6bcc7c835466420161ddb8f8dfd7df5f86b36aaf39a03df7918930a631d93ea816d3cee53e2ceb594d81cd7ab0cc4a0b18d342f809feacc765f48b063db0e187719fa5fa1dcfb371c0f92cfe3421efbf56878da8087a3ef33f5d73c5ef7ff18249b6b1d9e56ad9e5639a8d30efa7530e857ea3e84e229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c667cfe02d737a9de2a218ce42b000fc73c7ff8fb51ee58747cbbaef36d58d7497edda290c7354b7ac670b9d7e61aa8f34466b8eef7613ddd5f1bc435cd55bcda8dea398bfae0dcb558ce35c4b875e0a8f5cbe6c462170e73adb7d9df50b1bf43d6e2e9ba2a425386e75446689af134c5e714577a3c364fe7550fb371acfd95bb16895a5139c9b53d7cc680f7bc14c70fca85aa60e4f881d799cec4638f5cc3a4f5f24e2f760dd4f99fccf0b9a16751e9ff39f49f79b275babc63d37b9683bfcb3b76837b2f71d47ac76f81f7529dff8331f56d55c19f34e378fe03c7e500da8a5b1f9471dd3cf9eb70711dbfad0c9e0ee0e1186798ee37f2d807925ec7eff2b48aba8fa13a9da05f17837e51f7a2b44ff194599995599995599995599995599995599995599995599995599995599995593e337e579458b350af2084719c9e7d08d733e8f75fe8f8765de72555c371b9d7e168cd6985d7e61aa8f3d5aae1baaf70e5fae0dce71de2ce25c37a5ec97349f1eaa13db816c4f57dee768fa73d420b2a372716bbb88e9fbcc6c3ebf86d9eae85084db9fa2baeb1a2a6d85f5b3d1e5c1bad0fce7db6240bc7198f6787e2f282e2615f6a071f95f1fbd11ce719af25fe733d140fd7af1f71da36045ce7be90e71c37baa14d7dc1b9f95d03753e0463df475c199fe1c067471e8df83b6da5d6a9493f96dfb2cb17d77dd702671fc4c1d8eb8035a1d8ad183be38ce290bf06ca5fac1aae4bf5480fd29ad86d1fa1df044376ff7daddefb7250a727a2fd7d41b2edeff5787a3d667b4e3e0e79f6285cffb9c6a49e188d9683465407ef83b89ec9f3c748fff9467c6eafceab83f72c54e7cb3046c53d3f1af5cc21d7752cee99c3a87be30e60f4dbe83fe759e9cf693d06e345d2cf693d063984cf6905def157c0f189ab2e88bfb6509def7ac7f7efc9e93df81c18d5f9018c170dee99c5fae0dcfb6f7c666a3c3e5fc53d274df1f0be06fbf69f6bbb65ee86fa7d0932634e200bde27509d5f79e7ac2b867b4dc47b9f88792f69b5da95f1f38baf9fd5a107ded397880ec53edfebb585f2ba07da4275fed3bb074cfebea5780f987c5b47de93d038d01ed156aaf35fd0d7fe00f778749ef073475df5b97fa7add43d20e967db3cdebf0f8cb125fc3e706df5705dff777e49eb727f1fb8d37b9fc4df07fe5fc8b33a780e9d6bac5e17a3d10ad088eae07783e83a82bfe51b35d771be3e4fe78273e709f03ac973df147dfdf3e7d5a2ee1156781ae33dc22cc7dce074f6ebfaf38574bd4cf2b961fcae440bc4c5ef4ab430e99907ddfa601fef0bce67ec3c53ecb8df9cce8f43ecb8df9c1e8fd88d5eecc6718cad9aabe6923467f84de4f0fb67f89ba5762b755f4a0c39785f550a18ab53c0589302c6da1430d6a58071520a1827a780714a0a18a7a680310b8ce7f3dacea04f61acfa709daf52f71a187b359316e5fcff1dccff974ac97b1f8ccdf0992ed46275307a2df0731ec76f3f94fb7fbd1003fedf053352c03833058cb352c0d89402c6d929609c9302c6b929609c9702c6f929605c9002c68529605c9402c6c529605c9202c6e614305e9002c60b53c078510a182f4e01e32529605caa8c8930aee4652c8c95d1f270fc9f7f4fe5ff1c63e0c9473d73caf4dd93b2ffbf35e6df276d1debefc6e1b325bcff27dc53fb6d3b8e6747cafd6dbb52ffdf2a136361ac8c5ccf02e17347a3e1897a3ea89597b1305646aeefbfe077f446c3d3099a754468c6c058182b23d7b372e53ecb89cff4774668c6c058182b233e579d204fa85957193cdda0595784660c8c85b132723d979c8518a3e1e901cdba233463602c8c9591e9bb6da1663d65f0e077c07a223463602c8c95d1f2ac65d2acb70c9eb5a0596f846692189127e9dfc9ee8d88c5f19dc172db4e0cc83825058c5353c088cf49708c5fa59e93e8e5d5a730567db8ce57a9e7243036c3f763422df0fb107f4e8bf5bc3c259f93c0d81b98b4c0efabfc392d36000fc7f767b21063343cc49083f7cd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1b32ac3bd62c9cf2f1b2678ecb8cf2a133d76dce792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d73fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e233886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430edeb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6610c57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1fb5a53c0d89702c68dbc8c85b1325a9eedc9f3849a6d2b83673b6846ef6be5652c8c95d1f2ec489e27d46c7b193c3b40b3ed119a313016c6ca68797626cf136ab6a30c9e9da0d98e08cd18180b6365b43cbb92e70935db5906cf2ed06c6784660c8c85b1325a9eddc9f3849aed2a83673768b62b423306c6c258192dcf9ee47942cd7697c1b30734db1da119036361ac8c96676ff23ca1667bcae0d90b9aed89d08c81b1305646cbb32f799e50b3bd65f0ec03cdf646682695716d0a1837a6809159c7c258192dcf7e269e7d65f0ec079e4b9978f697c17329f03c3d799e30a72e2d83871872f0beb52960dc980246d5517594c4a83a568e8ecaa88cca581e635f0a18f55c2ba3544686cf5725bf8b74e9048fdde0c56ea890d871df459ae8b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cd7349b10f241fbb50ee6fcc1c001e8edfbc616a67de1ef73277ac3f26a89fd5ea724fab4b3dad7250e732d0ef7206fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85730b53d6eacbf6282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3f7edf4fba7f618cf70e51ab78face4a73a574f2abe3604da8738626b1fd26b4525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826797309eedc278ba85f17408e32908e3592c8c67ae309e19c2783609e399228c67b9309e6a613c79613c4b84f1ac10c6334f18cf783cdf5c0ecf4c613c9b85f14c15c653238c678d309eddc2787a85f1ec10c6d3238c67ab309e4e613c4b85f1b409e36911c6335f18cf2c613c2b85f16485f1d40ae3592d8c67af309e75c2789609e359208ca749184fbd309e9c309e3a613cfb84f1ec11c6b35e18cf4e613cdb84f17409e3d9228ca75d18cf2a613c0b85f1cc16c6334d184f83309e49c278f60be359248c678e309ee9c2781a85f16c10c63359184f46004f3638f737c9b2f0f703e0abf2de6bc7cf9ea6e1bf5fe9fc55f09eab5cb93ae2d857828fbe1b7e55c47b51a72ba12d7dae9c7f6a5ba813c6ea837d8a570f1c5709e1992c8c6783309e46613cd385f1cc11c6b34818cf7e613c9384f13408e399268c67b6309e85c2785609e36917c6b345184f97309e6dc278760ae3592f8c678f309e7dc278ea84f1e484f1d40be36912c6b34018cf32613ceb84f1ec15c6b35a184fad309eac309e95c2786609e3992f8ca745184f9b309ea5c2783a85f16c15c6d3238c6787309e5e613cbb85f1ac11c653238c67aa309ecdc278660ae339208c679e309e15c2789608e3c90be3a916c6b35c18cf14613c9b84f1cc10c6335718cf62613c05613c1dc278ba85f16c17c6b34b184f55040fc3ff7f19f2d0f36b746cda3f202436c37908ffdfcfab99da748d3b56ad3b2ef153bc1aa873c85d88edf328f85ee2f29f37c47bf56b40a36b98da42e723e39d1fe6d8057cae320086c0d32788e0e1781e95a99d23f230c1ff7f366fb5bad6d3ca3f7739a87335e8772d837e51b94dfb142f8dcc96879e1d25d62cd4db2084917c57f0f284fd764330722bd56faf051e8e318ca99d61ffbace6bd38608dda90ee6ea750ced8cea3bb47f1d9c87b4315b1efa6c48ac59a8b7490823f9aee1e509fbd7a660e456aa7f5d073c1ce30f533bc3fe75bdd7a64d11ba531dccd5eb19da19d57768ff7a380f6963b63c34374eac59a8b7590823f9aee5e569cf429b692bd5bfae071e8ef187a99d61ffbac16bd3e608dda90ee6ea0d0ced8cea3bb47f039c076556e62866cb43cf9c136b16ea6d11c248beeb5879daf35968336da5c6b11b8087639c67d23d1cc76ef4dab4254277aa83b97a23433ba3fa0eeddf1811bb3948568b9b46a1c54d113c378db31614af5ce6ab53c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc72c4167cb43bfd947ac59a8b7550823f9aee7e509bf17b43518b965bcfd3e28df043c3730e8c3d4cef019f2835e9bb646e84e75b07f1d64686754dfa1fd83701e0e96c17c630a9955e7b1315b1efabf1688350bf5b6096124df0dbc3ce138b62d18b9951ac70e020fc738cfd4ce701cebf7dab42d4277aa83fdab9fa19d517d87f6299e322b731cb3e5a1dfcc22d62cd4db2e84917c37b1f214c2ef376e0f466ea5c6b17ee03998384f711c63d03d1cc70e796dda1ea13bd5c15c3dc4d0cea8be43fb87e03c94c37c630a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d2d0ffddf84c49a857a3b843092ef202b4f5bb8eeb02318b965bcfd3e281f029efec4798aeb0e0cba87eb0e87bd36ed88d09dea60ff3accd0cea8be43fb87e13c4c74e61b53c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f2ec746562cd42bd9d4218c9d7cfcb13feeec1ce60e456eab99dc3c07388411fa67686cfed1cf1dab4334277aa83fdeb08433ba3fa0eed1f81f3a0ccca1cc56c7976b932b166a1de2e218ce43bc4cb138e63bb82915ba971ec08f0708cf34ced0cc7b101af4dbb2274a73a98ab030ced8cea3bb43f00e7419995398ad9f2ec766562cd42bddd4218c9779897271cc7760723b752e3d800f0708cf34ced0cc7b1a35e9b7647e84e7530578f32b433aaefd0fe51380fcaaccc51cc96678f2b136b16eaed11c248be23bc3c852cb499b652e3d851e0e118e799da198e63377b6dda13a13bd5c15cbd99a19d517d87f66f86f3903666cbb3d79589350bf5f60a6124df002f4fd8bff60623b752fdeb66e0e1187f98da19f6af635e9bf646e84e7530578f31b433aaefd0fe31380f6963b63cfb5c9958b3506f9f1046f21de5e509fbd7be60e456aa7f1d031e8ef187a99d61ff3aeeb5695f84ee540773f538433ba3fa0eed1f87f3903666cbb3df9589350bf5f60b61241f5e2ff633f1e43c9e5c84161331768317bba14262377ab11b2b24b6e6b9e67925c4d63cd73caf84d89ae79ae79510bb52734d35af4ccd33e751f3cc79d43ca39a8bd4fc8fc9c5eec071a50a621d636a276e7d50c6f939daba85f17408e32908e3592c8c67ae309e19c278a608e3592e8ca75a184f5e18cf12613c2b84f1cc13c6335318cf54613c35c278d608e3e915c6d3238ca75318cf52613c6dc2785a84f1cc17c6334b18cf4a613c59613cb5c278560be359278c6799309e05c2789a84f1d40be3c909e3a913c6b35e184f97309e76613cab84f12c14c6335b18cf34613c0dc2782609e359248ce780309e39c278a60be36914c63359184f46004f3638f7fb28f87d826af0d1f3fdfbc1f74c573e00beaa8818749ce3e0a3f9533a861dffb6369dcb5005efb92582eb9911f128ce2d11ef1d0fdd31561fec53bc7ae0b84508cf64613c8dc278a60be399238ce780309e45c2782609e36910c6334d18cf6c613c0b85f1ac12c6d32e8ca74b18cf7a613c75c27872c278ea85f13409e359208c6799309e75c278560be3a915c69315c6b35218cf2c613cf385f1b408e36913c6b354184fa7309e1e613cbdc278d608e3a911c6335518cf4c613cf384f1ac10c6b344184f5e184fb5309ee5c278a608e399218c67ae309ec5c2780ac2783a84f1740be3a98ae039c0c413f77b0a0704c4b6fb79d0c56e59f8fb787c0ff080c748fbc78011798927cfc413f71b147901b16dfbe9b304ad7965e1eff83d2eae9cca7b8cb41f9553f89cdc1a269eb8dfed582320b6d582e62ee919802cfc1dbfb7c095536b3c46da8fcaa9465e9ef0ff96581d8cdc4a3d6b847d8ee31c32b5338ffd2fc1dfd088fc2dead59e56f81baae3f1dc63dc7840f1945999e3982d0fcd3d132b5ecfc6e37b93a3618cbabe32f084e3634b30722b353e1e031e8eeb07533bc371ec84d7a69608dda90ee6ea09867646f51dda3f1111bb3948568b93a3d0e26404cfc971d682e295cb7c2085cc1274b63cab5c9958b3506f951046f2e57979c2f1715530722b353e9e041e8eeb07533bc331e194d7a65511ba531dec5fa718da19d57768ff149c8772984fa49059751e1bb3e5a1395262cd42bd821046f21d63e529e4b3d066da4a8d63a78087639c67d23d1cc706bd36152274a73ad8bf0619da19d577687f10ce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b63cf45d4262cd42bd36218ce43bc9ca535c77680b466ea5d61d068187635d8649f770dde1b4d7a6b608dda90ee6ea69867646f51dda3f0de7419995599995599995599995599995599995599995599995599995599995599965335b1efa4d6962cd42bd76218ce43bc5cb137e6fab3d18b9955a77380d3c1ceb324ced0cd71d6ef5dad41ea13bd5c15cbd95a19d517d87f66f85f3a0ccca1cc56c79e8b7a488350bf53a8430926f9095a7b87eda118cdc4a8d63b7020fc738cfa47b388e9df1dad411a13bd5c15c3dc3d0cea8be43fb67e03c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece9687fe8f3362cd42bd4e218ce43bcdcad316ae3b740623b752eb0e678087635d8649f770dde1acd7a6ce08dda90ef6afb30ced8cea3bb47f16cec344673e914266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b96a7cb9589350bf5ba843092ef565e9ef0770fba82915ba9e776ce02cf19067d98da193eb733e4b5a92b4277aa83fd6b88a19d517d87f687e03c28b33247315b9e6e5726d62cd4eb16c248be33bc3c852cb499b652e3d810f0708cf34ced0cc7b1dbbc367547e84e7530576f63686754dfa1fddbe03ca48dd9f2f4b832b166a15e8f1046f2e175b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701f15cef7528c001870eb83327e56e0b8f7646a673eeaf3d87aaf4df8790ce71cced7e70d6556e63866a6798bf6ac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986decdb938fdd9ef562933e81c743dbedcc5a30b5331c0fee08a235a67839a883797a07433b3310978e4dfb77c0792887f9440a9955e7b131dbd877261ebbf87bf2189bf4093c1edaee64d682a79dc5f1e0ae205a638a97833a98a77731b4330371e9d8b47f179c076556666556666556666556666556666556666556666556666556666556666596cd6c633f2bf1d8c5f97b8c4dfa041e0f6dcf62d682a79dc5f9fbbb83688d295e0eeae039bf9ba19d19884bc7a6fdbbe13c28b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb36c661bfbd9c9c70ebf8f83b1499fc0e3a1edd9cc5a30b5339cbfbf2788d698e2e5a00e9ef37b18da9981b8746cdabf07ce83322b7314b38dfd9cc46317d7f33036e913783cb43d87590b9e7616c7837b83688d295e0eeae039bf97a19d19884bc7a6fd7be13c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece36f67d89c76e0be7ef3136e913783cb4ddc7ac054f3b8bf3f7f707d11a53bc1cd4c13cbd9fa19d19884bc7a67d8a5709cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3c67e6ef2b1c3efb3636cd227f078687b2eb3164ced0c9f7f792088d698e2e5a00ee6e9030cedcc405c3a36ed3f00e7419995398ad9c67e30f9d885ac179bf4093c1eda1e64d682a99de178f05010ad31c5cb411d3ce70f31b4330371e9d8b4ff109c87b431e3f9cb24173b7c6e936254b957eb7b9e2b5783eff9ae5c03be17b8722df85ee8ca75e07b912b4f02df8ba16de47b892baf04df4b5d793df85ee6caebc0f77257ee05df2b5cb9077caf74e521f0bdca956f03dfab5df976f0bdc695ef00df6b5df94ef0bdce95ef02dfeb5df959e07b832bdf0dbe37baf2b3c1f72657be077c6f76e5e780ef2dae7c2ff8deeacaf781ef6dae7c3ff8deeeca4bc1f77084ef1daefc5cf0bdd3951f00dfbb5cf900f8deedca53c0f71e579e0abebf8032bdbed795ebc1f7882be7c0f73e579e06bef7bb7203f83ee0cad3c1f741576e04df875c7906f83eecca33c1f711579e05be8fba7213f83ee6cab3c1f771579e03be4fb8f25cf07dd295e781ef53ae3c1f7c9f76e505e0fb8c2b2f04df675d7911f83ee7ca8bc1f779575e02be2fb8329edfbf74e507c147e3ca43e0a371e579e0a371e5f9e0a371e505e0a371e585e0a371e545e0a371e5c5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828efde083ecabb37818ff2eecde0a3bc7b0bf828efde0a3ecabbb7818ff2eeede0a3bc7b187c9477ef001fe5dd3bc1d7eccaef02df05aefc6ef05de8caef01df45ae8ce3ccc5aefc5ef05de2ca8f808fc6c2f781ef69aefc7ef02d73e50f806fb92b7f107c2b5cf943e05be9ca1f06df2a57fe08f856bbf247c1d7e2ca1f03df1a57fe38f8f2aefc09f0b5baf227c15770e54f81afcd953f0dbe7657fe0cf83a5cf9b3e0eb74e5cf81afcb953f0fbe6e57fe02f8e83a4ee38cedcfb65f920ea491f5519b5b22da42bec9d096be20d97b3a8a45c7a6fd3660a47350187fc6c268195b3d46cbd3c1a019e6156da53e3375004f3b030f533bc3cf4c9d5e9bdabc36e5a0ced3a09d9d0cedcc405c3a36ed77426c8e738e5ad4bae32ef3b4a8813a397741b3d7d3523ad2316cfe1622dad2c3dc163a368d4b3de310bbcb8b9df762e3784c5ba9fed505ccdd0cccf6b8bdc91f37ec5f6bddb128a7284e1edab40e3448aa4d183be38ce290bf06ca17360dd7a57aa4075dbf88dde6329d4b64f7dfd7e1bd2f07757a22dadf1724dbfe5e8fa7d763b6e7644ed33007437f0873a0c7e3a0fd3c68d71ba35d0f684775f0fa5760d2aedbe3e9f6625b1ebac7e9041fdd2b103fde67b58c03b73fee75467093af0b18a3ee755a93672c79afd30a8ce4eb069e2e26cdfc73bdccd307afcb755e1d7a6f0dd4e9826b6336a2aeed774b33c3eda2cfe07f0c921dd3eb18f4c2f98100f4093c0d03d08bda59cbc03335189e23383b3478a6ffe681cb06fa8f6400adc6c3c4d74c4433aac087e5ea089fdd702a04a764692a04a764e9bd38254bc7a5faf6a3946d164d370c9c3c3ef48c5303a70e9fb9ebf4d0c091bd833723351d1d7dd550ae8af1d744f8689b1c0c4fdaf405c92ec6d479b14a25cf64789d943c4f2b533bc38bde14af4d755e9b7250a716fe3685a19d19884bc7a6fd2911b1131c88422da68e428ba9113c53c7590b9cf8261ff654fa3b2e9e54796dc11e8d6df2f33cd10651c0a570fc8c83b37fb39dbdd6356652307cb269f4b477b4f624d819537bd5b233a27606d40e417686d3ce68da8b9a9db1b433947646d2ce40da19473bc3686714ed0ca29d31b43384cd417106d0cef8d9193e3ba37709b07d0578eda76a7b85b433727606ceceb8d93b2bfb89cdde8dd8bb6f7ba768ef0eec5d81fd64696719ecd5d6dec9d8abb4bdb2da3b457b8768efe8ed1dae5da5da606ca3d37a93b1cdc6b618db6a6c9bb1edc67618db696c97b1ddc6f618db6b6c9fb1fdc62e35f6f4a038bb7e99b1cb8d5d61ec19c6ae347695b1ab8d5d63ec5a63d719bbded80dc66e347693b183c6fa8d1d3276d8d8116303c68e1abbd9d83163c78d3dd3d82d41f1099d93c64e191b3476dad8adc6ce183b1b1457ccec0a995d11b32b6076c5cbae70d9152dbb826557acec0a955d91b22b50f705c51526bb52645786ecaa805d05b0b3fe7696ff05417116dfcedabf3828cecadb59783beb6e67d9edacba9d45b7b3e67696dcce8adb59703beb6d67b9edacb69dc5b6b3d67696dace4adb59683beb6c67991f0e8ab3c876d6d8ce12db59613b0b6c677ded2cef23417116d7cedada595a3b2b6b6761edacab9d65b5b3aa7616d5ce9ada59523b2b6a6741edaca79de5b4b39a7616d3ce5ada594a3b2bf945638f1afb2b637f6dec6f8cfdadb1bf33f6f7c6be64eccbc6fec1d83f1afba7a09897ff6cec5f8c7dd5d8bf1afb37635f33f6efc6be6eec1bc6fec3d8378d3d66ec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec71634f18fb8db1df1afb9db1df1b7b32185eddc041e40f6e8766dafb8786064e9e1e6a1e1a6c3e79db89a1e3a74fdcd57cc7f1a163cd83b70f9c397a62f00e7cf37bddb045cb089bce9ce9bfabf9f8a9230377360fde36d43c78b4f9d0e06da78e9cc5377dc9bd69e1b911fb8f1c890ff6cdaaa740fa9d3106fda57b1f2dd0ec2addb6c7c722c8936379d3cceab135e82a77d5a14fef9717ef769bcf9e181c6ace379f32fff69f30ef1938d2d28c7f3b6b443e3bd47c76a8ffcc50f3d13383279b5b5bf0b8fd53c6d088faa631bca9b369f42d0ffe1fb379eca96d0b0400", + "bytecode": "0x1f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433828b4506139833654ab272204882222d92a04828599625599273ced9723acb39e7b32eda77e73bdf39ca3947c9e9feb9f3bdbbf7fcae7bb6cbf8d09c5963a129b0065bf35e717b0abd53bffea6ba67b67b7699098adb1f8c655cb9dad845c1b91bfdbdcfbde69fdcd69ae0b1f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82915bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413ac6a8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d8a7b5de65e97bbd715ee95deb3cabdae766dac71fb2dc6d6583663addedf0ac6da8cb51bebf0fed669accb58b7b11ef7b766f7b75e636b8dad33b6ded806631b9d0e9b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1a71a3b60ec3263971bbbc2d8d38c5d69ec2a63571bbbc663b9d6d875c6ae377683b11b8ddd64eca0b17e63878c1d3676c4d880b1a3c66e3676ccd871634f37768bb113c64e1a3b656cd0d86963b71a3b63ecacb12163b719bbddd81dc6ee347697a7d9338cdd6dec99c6eef1389f65ec5e63f719bbdfd8b38d3d60ec41630f197b8eb1e71a7b9eb1e71b7b81b1171a7b91b1171b7b89b1971a7b99b1971b7b85b1571a7b95b1571b7b8db1d71a7b9db1d71b7b83b1371a7b93b1373b16ea086f31f656630f1b7b9bb1b71b7b87b1771a7b97b1bf32f66e638f187b8fb1f71a7b9fb1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1bf36f679638f1afb1b637f6becef8cfdbdb17f30f68fc6be60ec8bc6fec9d83f1bfb17635f32f6afc6fecdd8973dcdffddd87f18fb8ab1af3adfd7dcebd75d5d9a17fb86b16fbaf263eef55beef5dbeef53bde7bbe6bec7b9eeffbc67ee0f97e68ec47aefc63f7fa13f7fa53f7fa33f7fa73f7fa0bf7fa4bf7fa2bf7fa6bf7fab87b7dc2bdfec6bdfed6bdfecebdfedebdda35d5ab9b8ae5c9c1f0d617243446b51fcddb3515127f693072b35a54bbbfd16bb3f3d7b87d7a25ed6add7eade7af73fb75de7126bbfdc99ebfd1ed377afe996e7fa6e76f72fb4d9e7f8edb9fe3f92f76fb17833f1bc09cabf35b5fb57365c047f95a05be5ae7ab065f1d1d0e7c939caf167c747eebc037c5f926816faaf34d065fd6f9a69096c6ea9daf2f482a57f2fdf6b8b9a48febd6a1a625cf7bd81eb78189777af2bc03f6b88d0cbc363f66b8634d87bc99e97c8de09be57c33c0e786a03ff739eb9bed7cb3c037c7f99ac037d7f966836f9ef3cd01df7ce79b0bbe05ce370f7c0b9d6f3ef81639df02f02d76be85e05be27c8bc0d7ec7c8bc17781f32d01df85ced70c3e7ac6e502f05dec7c1782ef12e7bb087c34d65e0c3eba37bcc4f9ec38313903ef717e1aa3c2f7d0f80cbe653436836f398dcbe05b416332f856426cf2ad8271857cab9d8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282cf06b562ec8c338a43fe1a28ef82ba548ff4a0eb0cb1dbebc93a57de58e27dbddefb7250675d44fbfb8264dbbfdee359ef31d742fb7972b6ada0393beaadec9cbd0aeafab947f73c133167f7020743ce766ace8e7a2b3b6707a0ae9f7b74df3b1173f65ae060c8d97e9e9c2de435678b736441109d7bf4d96722e6ec31e0483e673b346747bf959db3f7435d3ff7e8f3ef44ccd9db8123f99cedead77b83516f65e7ec4ba1ae9f7b3417331173f641e060c8d9011d6747bd959db36f86ba7eeed1bce044ccd9570047f239dbc394b36d9ab34171bd3308a2738fe6a82762ce3e0c1cc9e7ec619d9f1dfd5676ce7e06eafab947eb251331673fe8ca769de16b6e9d6121f8beee7c8b8037f9dc3ed2ce94db05cdede2732041109da3b476371173fb5157b679fc183c7b40be6f39df05e0fbb6f35d08beef38df45d02e863ed0af7d60d45bd97de07b50d7cf655a479e887de02bc0c190b387356747bd959db38f435d3ff7e899868998b33f040e869c1dd09c1df55676cefe11eafab9b7cc952762ced273a5f67ee1c7ee7e6105f87ee27c2bc1f753e75b05be9f39df6af0fddcf95ac0f70be75b03be5f3a5f1e7cbf72be56f0fddaf90ae07bdcf9dac0f784f3b583ef37ced701bedf3a5f27f87ee77c5de0fbbdf37583ef0fced7e37c76bd8b9ebdfa92f3d9734b1af505c99e5b7ac6928e4dfbabc621768317bb611c63377ab11b2362af66889d8518b465bcfd3e28afe6e5c9e78291dfffa0586b928fd566dbde128cbeed6b8027cfd0f62cc4180d4f1e785a93e7099ff52d247fdcf01cb7789a6621560bb4ab8da15d198845c7a67d8a97031f8edf6d118cedc9331632108b8e4dfbedc0483ebc9ed0759dfa8fbd1e2ecd0cf332f4a5f09e88e2d16f7f11c71af0539dff9e35ccb6c2b1d5c3dff1dadaeaf998f232cc0b8a45c7a67d8a570fed691d7fc6c26819f31e23d718918158746c3f36f6f7d5e3afd9a8ce6b0e7ce7614c2a8c754caa07b6f1b84f893bd75262735caf321083c636d2bc007eaa33db7d21c18e6d3b60dc65e87f8572efdf703c483e8f0b79ecd7a3e169031e8ebecfd45ff378ddff53906cae75785ab57a5ae5a04e3be8d7c1a05fa9fb108aa7cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccf299f1f90b5cdfa47aab843092af003c1cf3fce1ef47b963d1f1edbaceb7615d27f9758b421ed72ce919c3e55e9b6ba0ce1399e1badf87f5747f6d10d73457f16a37aae72cea8373d76239d710e3d681a3d62f9b138b5d38ccb5de667f43c5fe0e598ba7ebaa084d199e5319a169c6d3149f535ce9f1d83c9d573dccc6b1f657ee5a246a45e524d7f6f01903def3521c3f2817aa8291e3075e673a138f3d720d93d6cb3bbdd83550e77f32c3e7869e45a5ffe7d07fe6c9d6e9f28e4def590efe2eefd80deebdc451eb1dbf05de4b75fe0fc6d4b754057fd68ce3f90f1c9703682b6e7d50c675f3e4afc3c575fcb632783a8087639c61badfc8631f487a1dbfcbd32aea3e86ea74827e5d0cfa45dd8bd23ec55366655666655666655666655666655666655666655666655666655666655666f9ccf85d5162cd42bd8210c6717af6215ccfa0df7fa1e3db759d17550dc7e55e87a335a7155e9b6ba0ce97ab86ebbecc95eb83739f77883b970ceb7925cf25c5ab87f6e05a10d7f7b9db3d9ef6082da8dc9c58ece23a7ef21a0fafe3b779ba162234e5eaafb8c68a9a627f6df578706db43e38f7d9922c1c673c9e1d8acb0b8a877da91d7c54c6ef47739c67bc96f8cff5503c5cbf7ec469db10709dfb429e73dce88636f505e7e6770dd4f9008c7d1f72657c86039f1d7934e2efb4955aa726fd587ecb2e5f5cf75d0b9c7d100763af03d68462b762ec8c338a43fe1a287fbe6ab82ed5233d486b62b77d847e130cd9fdf7b57aefcb419d9e88f6f705c9b6bfd7e3e9f598ed39f928e4d9a370fde71a937a62345a0e1a511dbc0fe27a26cf1f23fde71bf1b9bd3aaf0edeb3509d2fc21815f7fc68d433875cd7b1b8670ea3ee8d3b80d16fa3ff9c67a53fa7f5188c17493fa7f518e4103ea71578c75f01c727aeba20feda4275beeb1ddfbf27a7f7e0736054e707305e34b86716eb8373efbff199a9f1f87c15f79c34c5c3fb1aecdb7fa9ed96b91beaf725c88c39812c789f40757ee59db3ae18ee3511ef7d22e6bda4d56a57c6cf2fbe7e56871e784f5f223a14fb7cafd716caeb1e680bd5f94fef1e30f9fb96e23d60f26d1d794f42e3407b445ba9ce7f415ffb23dce3d179c2cf1d75d5e7fe9db652f780a49f6df378ff3e30c696f0fbc0b5d5c375fddff925adcbfd7de04eef7d127f1ff87f21cfeae03974aeb17a5d8c462b4023aa83df0da2eb08fe966fd45cc7f9fa3c9d0bce9d27c0eb24cf7d53f4f5cf9f578bba4758e1698cf708b31c7383d3d9afebcf17d2f532c9e786f1bb122d1017bf2bd1c2a4671e74eb837dbc2f389fb1f34cb1e37e733a3f0eb1e37e737a3c62377ab11bc731b66aae9a4bd29ce13791c3ef9fe16f96daadd47d2931e4e07d552960ac4e01634d0a186b53c0589702c64929609c9c02c62929609c9a02c62c309ecf6b3b833e85b1eac375be4add6b60ecd54c5a94f3ff7730ff5f2a25ef7d3036c367ba508bd5c1e8b5c0cf791cbffd50eefff5420cf87f17cc4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a189b53c078410a182f4c01e3452960bc38058c97a48071a93226c2b89297b1305646cbc3f17ffe3d99ff738c81271ff5cc29d3774fcafeffd6987f9fb475acbf1b87cf96f0fe9f704feeb7ed389e1d29f7b7ed4afd7fab4c8c85b132723d0b84cf1d8d8627eaf9a0565ec6c25819b9beff82dfd11b0d4f2768d611a119036361ac8c5ccfca95fb2c273ed3df19a119036361ac8cf85c75823ca1665d65f07483665d119a313016c6cac8f55c7216628c86a70734eb8ed08c81b1305646a6efb6859af594c183df01eb89d08c81b1305646cbb39649b3de3278d68266bd119a4962449ea47f27bb372216c77706cb6d3b3120e39414304e4d01233e27c1317e957a4ea297579fc258f5e13a5fa59e93c0d80cdf8f09b5c0ef43fc252dd6f3f2947c4e02636f60d202bfaff297b4d8003c1cdf9fc9428cd1f010430ede3723058c3353c0382b058c4d29609c9d02c63929609c9b02c67929609c9f02c60529605c9802c64529605c9c02c6252960c4cfaa0cf78a253fbf6c98e0b1e33eab4cf4d8719f4b267a6ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf35c52ec34ccf12be3c463449ee6e478f2d8768cd527a0ed7d113c19a6b663ac4d02da4e0c6963dc9802c6b52960541d8bcf208e85d1f26c66e2d95406cf66e0d9c2c4b3b90c9e2dc0b335799e30a7b694c1430c3978dfda14306e4c01a3eaa83a5ab35bfec96daaa320c634e8a88ccaa88cca783e18d330862b632af2b1305646cbb32d799e50b3ad65f06c03cde87dad2960ec4b01e3465ec6c258192dcff6e47942cdb695c1b31d34a3f7b5f23216c6ca68797624cf136ab6bd0c9e1da0d9f608cd18180b6365b43c3b93e70935db5106cf4ed06c4784660c8c85b1325a9e5dc9f3849aed2c83671768b633423306c6c258192dcfeee47942cd7695c1b31b34db15a119036361ac8c96674ff23ca166bbcbe0d9039aed8ed08c81b1305646cbb337799e50b33d65f0ec05cdf64468c6c058182ba3e5d9973c4fa8d9de3278f681667b233493cab836058c1b53c0c8ac6361ac8c96673f13cfbe3278f603cfa54c3cfbcbe0b914789e9a3c4f98539796c1430c3978dfda14306e4c01a3eaa83a4a62541d2b4747655446652c8fb12f058c7aae95512a23c3e7ab92df45ba7482c76ef062375448ecb8ef224df4d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e6b9a4d807928f5d28f737660e000fc76fde30b5336f8f7b993bd69f12d4cf6a75b9a7d5a59e5639a87319e87739837e19884bc7a67d8a572ef353043033c52e4c33c79802eda7181b3d3d6cfc2b98da1e37d65f31c163c78df5133d76dc583fd1636b9e6b9e57426ccd73cdf34a88ad79ae792e2536966b83e1fb76fafd537b8ca7b9728ddb4756f2539dab27155f1b02ed431cb1b50fe9b5a212626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae7f2f21cf3a16a1c78028f2728c1b34b18cf76613cddc2783a84f11484f12c16c6335718cf0c613c9b84f14c11c6b35c184fb5309ebc309e25c2785608e399278c673c9e6f2e8767a6309ecdc278a60ae3a911c6b34618cf6e613cbdc2787608e3e911c6b355184fa7309ea5c278da84f1b408e3992f8c6796309e95c278b2c2786a85f1ac16c6b35718cf3a613ccb84f12c10c6d3248ca75e184f4e184f9d309e7dc278f608e3592f8c67a7309e6dc278ba84f16c11c6d32e8c6795309e85c278660be399268ca74118cf24613cfb85f12c12c6334718cf74613c8dc2783608e3992c8c272380271b9cfb9b6459f8fb01f05579efb5e3674fd3f0dfaf74fe2a78cf55ae5c1d71ec2bc147df0dbf2ae2bda8d395d0963e57ce3fb92dd40963f5c13ec5ab078eab84f04c16c6b341184fa3309ee9c278e608e359248c67bf309e49c2781a84f14c13c6335b18cf42613cab84f1b40be3d9228ca74b18cf36613c3b85f1ac17c6b34718cf3e613c75c27872c278ea85f13409e359208c6799309e75c278f60ae3592d8ca756184f5618cf4a613cb384f1cc17c6d3228ca74d18cf52613c9dc278b60ae3e911c6b343184faf309eddc278d608e3a911c6335518cf66613c3385f11c10c6334f18cf0a613c4b84f1e485f1540be3592e8c678a309e4dc2786608e3992b8c67b1309e82309e0e613cddc278b60be3d9258ca72a8287e1ffbf0c79e8f9353a36ed1f10129be13c84ffefe7d54c6dbac61dabd61d97f8295e0dd439e42ec4f679147c2f71f9cf1be2bdfa35a0d1354c6da1f391f1ce0f73ec023e57190043e0e91344f0703c8fcad4ce117998e0ff3f9bb75a5deb69e59fbb1cd4b91af4bb9641bfa8dca67d8a974666cb43cf8e126b16ea6d10c248be2b7879c27ebb2118b995eab7d7020fc718c6d4ceb07f5de7b5694384ee540773f53a867646f51ddabf0ece43da982d0f7d3624d62cd4db2484917cd7f0f284fd6b5330722bd5bfae031e8ef187a99d61ffbade6bd3a608dda90ee6eaf50ced8cea3bb47f3d9c87b4315b1e9a1b27d62cd4db2c84917cd7f2f2b467a1cdb495ea5fd7030fc7f8c3d4ceb07fdde0b5697384ee540773f506867646f51ddabf01ce83322b7314b3e5a167ce89350bf5b6086124df75ac3cedf92cb499b652e3d80dc0c331ce33e91e8e63377a6dda12a13bd5c15cbd91a19d517d87f66f8c88dd1c24abc54da3d0e2a6089e9bc6590b8a572ef3d52964569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a1dfec23d62cd4db2a84917cd7f3f284df0bda1a8cdc32de7e1f946f029e1b18f4616a67f80cf941af4d5b2374a73ad8bf0e32b433aaefd0fe41380f07cb60be3185ccaaf3d8982d0ffd5f0bc49a857adb843092ef065e9e701cdb168cdc4a8d63078187639c676a67388ef57b6dda16a13bd5c1fed5cfd0cea8be43fb144f9995398ed9f2d06f66116b16ea6d17c248be9b58790ae1f71bb70723b752e3583ff01c4c9ca7388e31e81e8e6387bc366d8fd09dea60ae1e62686754dfa1fd43701eca61be3185ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece9687fe6f4262cd42bd1d4218c9779095a72d5c77d8118cdc32de7e1f940f014f7fe23cc5750706ddc37587c35e9b7644e84e75b07f1d66686754dfa1fdc3701e263af38d2964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b9617976ba32b166a1de4e218ce4ebe7e5097ff7606730722bf5dcce61e039c4a00f533bc3e7768e786dda19a13bd5c1fe7584a19d517d87f68fc0795066658e62b63cbb5c9958b3506f971046f21de2e509c7b15dc1c8add43876047838c679a67686e3d880d7a65d11ba531dccd501867646f51dda1f80f3a0ccca1cc56c7976bb32b166a1de6e218ce43bcccb138e63bb83915ba9716c007838c679a67686e3d851af4dbb2374a73a98ab4719da19d57768ff289c076556e62866cbb3c79589350bf5f6086124df115e9e4216da4c5ba971ec28f0708cf34ced0cc7b19bbd36ed89d09dea60aedeccd0cea8be43fb37c379481bb3e5d9ebcac49a857a7b8530926f809727ec5f7b83915ba9fe7533f0708c3f4ced0cfbd731af4d7b2374a73a98abc718da19d57768ff189c87b4315b9e7dae4cac59a8b74f0823f98ef2f284fd6b5f30722bd5bf8e010fc7f8c3d4ceb07f1df7dab42f4277aa83b97a9ca19d517d87f68fc379481bb3e5d9efcac49a857afb8530920faf17fb9978721e4f2e428b8918bbc18bdd5021b11bbdd88d15125bf35cf3bc12626b9e6b9e57426ccd73cdf34a885da9b9a69a57a6e699f3a879e63c6a9e51cd456afea7e46277e0b85205b18e31b513b73e28e3fc1c6dddc2783a84f11484f12c16c6335718cf0c613c5384f12c17c6532d8c272f8c6789309e15c278e609e399298c67aa309e1a613c6b84f1f40ae3e911c6d3298c67a9309e36613c2dc278e60be399258c67a5309eac309e5a613cab85f1ac13c6b34c18cf02613c4dc278ea85f1e484f1d409e3592f8ca74b184fbb309e55c278160ae3992d8c679a309e06613c9384f12c12c6734018cf1c613cd385f1340ae3992c8c272380271b9cfb7d14fc3e4135f8e8f9fefde07bba2b1f005f55440c3ace71f0d1fc291dc38e7f5b9bce65a882f7dc12c1f5f4887814e79688f78e87ee18ab0ff6295e3d70dc228467b2309e46613cd385f1cc11c6734018cf22613c9384f13408e399268c67b6309e85c2785609e36917c6d3258c67bd309e3a613c39613cf5c2789a84f12c10c6b34c18cf3a613cab85f1d40ae3c90ae359298c6796309ef9c2785a84f1b409e3592a8ca753184f8f309e5e613c6b84f1d408e3992a8c67a6309e79c2785608e359228c272f8ca75a18cf72613c5384f1cc10c6335718cf62613c05613c1dc278ba85f15445f01c60e289fb3d85030262dbfd3ce862b72cfc7d3cbe0778c063a4fd63c088bcc49367e289fb0d8abc80d8b6fdf45982d6bcb2f077fc1e17574ee53d46da8fca297c4e6e0d134fdcef76ac1110db6a417397f40c4016fe8edf5be0caa9351e23ed47e554232f4ff87f4bac0e466ea59e35c23ec7710e99da99c7fe97e06f6844fe16f56a4f2bfc0dd5f178ee316e3ca078caaccc71cc9687e69e8915af67e3f1bdc9d130465d5f1978c2f1b12518b9951a1f8f010fc7f583a99de13876c26b534b84ee540773f504433ba3fa0eed9f8888dd1c24abc5c95168713282e7e4386b41f1ca653e904266093a5b9e55ae4cac59a8b74a0823f9f2bc3ce1f8b82a18b9951a1f4f020fc7f583a99de19870ca6bd3aa08dda90ef6af530ced8cea3bb47f0ace4339cc2752c8ac3a8f8dd9f2d01c29b166a15e410823f98eb1f214f25968336da5c6b153c0c331ce33e91e8e63835e9b0a11ba531dec5f830ced8cea3bb43f08e7419995599995599995599995599995599995599995599995599995599995599965335b1efa2e21b166a15e9b1046f29d64e529ae3bb40523b752eb0e83c0c3b12ec3a47bb8ee70da6b535b84ee540773f534433ba3fa0eed9f86f3a0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2992d0ffda634b166a15ebb1046f29de2e509bfb7d51e8cdc4aad3b9c061e8e7519a67686eb0eb77a6d6a8fd09dea60aedecad0cea8be43fbb7c2795066658e62b63cf45b52c49a857a1d4218c937c8ca535c3fed08466ea5c6b15b8187639c67d23d1cc7ce786dea88d09dea60ae9e61686754dfa1fd33701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b4767cb43ffc719b166a15ea71046f29d66e5690bd71d3a83915ba9758733c0c3b12ec3a47bb8ee70d66b536784ee5407fbd759867646f51dda3f0be761a2339f4821b3e6c6f8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbd3e5cac49a857a5d4218c9772b2f4ff8bb075dc1c8add4733b6781e70c833e4ced0c9fdb19f2dad415a13bd5c1fe35c4d0cea8be43fb43701e945999a3982d4fb72b136b16ea750b6124df195e9e4216da4c5ba9716c087838c679a67686e3d86d5e9bba2374a73a98abb731b433aaefd0fe6d701ed2c66c797a5c9958b350af470823f9f0badcc3c493f37872115a9cafd876bfd795ebdd6b16fede0b8c5ce3618fc748fb98e3c84b3cbd4c3c0d1e4f438416e72bb66dff3a579ee65eb3f0f775c0c89553bd1e23ed47e55403f0ac63e269f4781a23b4385fb1ad16eb5d79ba7bcdc2dfd70323574eadf318693f2aa71a81673d134fdc98b47e1c62c7f5aff1881d972be3115b3557cd5573d59c53f3cc79d43c731e35cfa8e6a23467b88f0ae77b2946000cb8f541193f2b70dc7b32b5331ff5796cbdd726fc3c86730ee7ebf386322b731c33d3bc457bd68b4dfa041e0f6d43cc5a8ce7bc69afd7a634cc9b96623e914266d5796ccc36f6edc9c76ecf7ab1499fc0e3a1ed76662d98da198e077704d11a53bc1cd4c13cbd83a19d19884bc7a6fd3be03c94c37c2285ccaaf3d8986dec3b138f5dfc3d798c4dfa041e0f6d77326bc1d3cee278705710ad31c5cb411dccd3bb18da9981b8746cdabf0bce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9178ece2fc3dc6267d028f87b667306bc1d3cee2fcfddd41b4c6142f0775f09cdfcdd0ce0cc4a563d3fedd701e945999955999955999955999955999955999955999955999955999955999955936b38dfdcce46387dfc7c1d8a44fe0f1d0f64c662d98da19cedfdf13446b4cf1725007cff93d0cedcc405c3a36eddf03e7419995398ad9c67e56e2b18beb79189bf4093c1eda9ec5ac054f3b8be3c1bd41b4c6142f0775f09cdfcbd0ce0cc4a563d3febd701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b47671bfbbec463b785f3f7189bf4093c1edaee63d682a79dc5f9fbfb83688d295e0eea609edecfd0ce0cc4a563d33ec5ab04e6132964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f3bf9d8e1f7d93136e913783cb43d9b590ba67686cfbf3c10446b4cf1725007f3f401867666202e1d9bf61f80f3a0ccca1cc56c633f987cec42d68b4dfa041e0f6d0f326bc1d4ce703c782888d698e2e5a00e9ef38718da9981b8746cda7f08ce43da98f1fc65928b1d3eb74931aadcabf53dc795abc1f75c57ae01dff35cb9167ccf77e53af0bdc0952781ef85d036f2bdc8955782efc5aebc1e7c2f71e575e07ba92bf782ef65aedc03be97bbf210f85ee1cab781ef95ae7c3bf85ee5ca7780efd5ae7c27f85ee3ca7781efb5aefc0cf0bdce95ef06dfeb5df999e07b832bdf03be37baf2b3c0f72657be177c6f76e5fbc0f71657be1f7c6f75e5a5e07b38c2f736577e36f8deeeca0f80ef1dae7c007cef74e529e07b972b4f05df5f41995edfedcaf5e07bc49573e07b8f2b4f03df7b5db9017cef73e5e9e07bbf2b3782ef03ae3c037c1f74e599e0fb902bcf02df875db9097c1f71e5d9e0fba82bcf01dfc75c792ef83eeecaf3c0f709579e0fbe4fbaf202f07dca951782efd3aebc087c9f71e5c5e0fbac2b2f01dfe75c19cfef5fbbf283e0a371e521f0d1b8f21cf0d1b8f25cf0d1b8f23cf0d1b8f27cf0d1b8f202f0d1b8f242f051debd087c94772f061fe5dd4bc04779f752f051debd0c7c94772f071fe5dd2bc04779f74af051debd0a7c9477af061fe5dd6bc04779f75af051debd0e7c9477af071fe5dd1bc04779f746f051debd097c94776f061fe5dd5bc04779f756f051de3d0c3ecabbb7818ff2eeede06b76e57780ef02577e27f82e74e57781ef2257c671e662577e37f82e71e547c04763e17bc0f714577e2ff896b9f2fbc0b7dc95df0fbe15aefc01f0ad74e50f826f952b7f087cab5df9c3e06b71e58f806f8d2b7f147c7957fe18f85a5df9e3e02bb8f227c0d7e6ca9f045fbb2b7f0a7c1daefc69f075baf267c0d7e5ca9f055fb72b7f0e7c741da771c6f667db2f4907d2c8faa8cd2d116d21df64684b5f90ec3d1dc5a263d37e1b30d239288c3f6361b48cad1ea3e5e960d00cf38ab6529f993a80a79d8187a99de167a64eaf4d6d5e9b7250e729d0ce4e867666202e1d9bf63b2136c739472d6add7197795ad4409d9cbba0d9eb69291de918367f0b116de9616e0b1d9bc6a59e7188dde5c5ce7bb1713ca6ad54ffea02e66e06667bdcdee48f1bf6afb5ee58945314270f6d5a071a24d5268c9d714671c85f03e50b9b86eb523dd283ae5fc46e7399ce25b2fbefebf0de97833a3d11edef0b926d7fafc7d3eb31db7332a7699883a13f8439d0e371d07e1eb4eb8dd1ae07b4a33a78fd2b3069d7edf1747bb12d0fdde374828fee15881fefb35ac681db1ff73a23b8c9d7058c51f73aadc93396bcd7690546f275034f179366feb95ee6e983d7e53aaf0ebdb706ea74c1b5311b51d7f6bba599e176d167f03f05c98ee9750c7ae1fc4000fa049e8601e845edac65e0991a0ccf119c1d1a3cd37ff3c06503fd47328056e361e26b26a21955e0c3329d26f4d90da742704a96a642704a96de8b53b2745caa6f3f4ad966d174c3c0c9e3434f3b3570eaf099bb4e0f0d1cd93b783352d3d1d1570de5aa187f4d848fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b432b533bce84df1da54e7b52907756ae16f5318da9981b8746cda9f12113bc18128d462ea28b4981ac133759cb5c0896ff2614fa5bfe3e24995d716ecd1d8263fcf136d10055c0ac7cf3838fb37dbd96b5d632605c3279b464f7b476b4f829d31b5572d3b236a6740ed10646738ed8ca6bda8d9194b3b43696724ed0ca49d71b4338c7646d1ce20da19433b43d81c146700ed8c9f9de1b3337a9700db9780d77eaab657483b236767e0ec8c9bbdb3b29fd8ecdd88bdfbb6778af6eec0de15d84f967696c15e6ded9d8cbd4adb2babbd53b47788f68ededee1da55aa0dc6363aad3719db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec52634f0d8ab3eb9719bbdcd815c69e66ec4a635719bbdad835c6ae35769db1eb8ddd60ec466337193b68acdfd82163878d1d313660eca8b19b8d1d3376dcd8d38ddd12149fd03969ec94b14163a78ddd6aec8cb1b34171c5ccae90d91531bb026657bcec0a975dd1b22b5876c5caae50d91529bb02755f505c61b22b457665c8ae0ad855003beb6f67f99f171467f1edacfd0b83e2acbc9d85b7b3ee7696ddceaadb59743b6b6e67c9edacb89d05b7b3de7696dbce6adb596c3b6b6d67a9edacb49d85b6b3ce7696f9e1a0388b6c678ded2cb19d15b6b3c076d6d7cef23e12146771edacad9da5b5b3b27616d6cebada59563bab6a6751edaca99d25b5b3a27616d4ce7ada594e3bab696731edaca59da5b4b3929f37f6a8b1bf31f6b7c6feced8df1bfb0763ff68ec0bc6be68ec9f8cfdb3b17f098a79f9afc6fecdd8978dfdbbb1ff30f615635f35f635635f37f60d63df34f698b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b11f19fbb1b19f18fba9b19f19fbb9b15f18fba5b15f19fbb5b1c78d3d61ec37c67e6bec77c67e6fec0fc1f0ea060e227f743b34d3de3f343470f2f450f3d060f3c9db4e0c1d3f7de2aee63b8e0f1d6b1ebc7de0ccd1138377e09bdfed862d5a46d874e64cff5dcdc74f1d19b8b379f0b6a1e6c1a3cd87066f3b75e42cbee90bee4d0bcf8dd87fe4487cb06f563d09d2ef8c31e82fddfb68816657e9b63d3e1641fe309637cdac1e5b83ae72571dfaf47e79f16eb7f9ec89c1a1e67cf329f36fff09f39e81232dcdf8b7b346e4b343cd6787facf0c351f3d3378b2b9b5058fdb3f650c8da86f1ac39b3a9b46dff2e0ff01d6be6389750b0400", "isInternal": false } ], - "packedBytecode": "0x000000028df71de500000047df1f8b08000000000000ffed9d779815c5baee7b604074cd8898b3830915816118f200833967141111866100058628823991a3398224c95940411110c3ce3927756f773c61ff75ef39e7deebb95d6bd577e69da27a316bec5abc6b56f5f3d4acea6faafbfbd5db5f57a7eaae7f06415010a4a6e6613a3f387492ff57eadfd26f36758e715da52e390b7284b3598e7036cf11cec21ce16c91239c2d7384f3a81ce16c95239c47c7c8a9d89a05f5a7b8798f71a06bdc8c891cd3b42807342dce314d8fcd014d5b07b9d1461d97239c6d7284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce13c234738cfcc11ceb37284f3ec1ce13c2747384b7284b36d8e709e9b239ce7e508e7f939c279418e705e1823677be06ca77f2fd2bf17ebdf4bf4af94bd54ff76d0bf1d751d0bf57c27c51526f590a6ccf85f97309587a96b98ba19ffeb1ea61e61ea19a65efa7f25fa7fbdc35411a63e61ea1ba67e5a83fe61ba2c4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e300d08d39d61ba2b4c03c374779806192cf784697098ee0dd39030dd17a6a1611a16a6aa300d0f5375984684a9264c23c3342a4ca3c3747f981e08d398308d0dd3b830d586697c9826846962982685697298a684e9c1304d0dd343619a16a6e986660f87e991303d1aa6c70ccec7c3f444989e0cd353617a3a4ccf84e9d930cd08d3cc30cd0ad3ec30cd09d3dc30cd0bd3fc302d08d3c2302d0ad3e2303d17a6e7c3f442985e0cd34b617a394caf84e9d530bd16a6d7c3f44698de0cd312cd223bc2d230bd15a665615a1ea615615a19a655617a3b4cabc3b4264c6bc3b42e4cebc3b4214c1bc3b4294c9bc3b4254c5bc3b42d4cdbc3f44e9876846967987685e9dd30bd17a6dd61da13a6f7c3f44198f686e9c330ed0bd3fe301d08d347613a18a68fc3f449983e0dd36761fa5698be1da6ef84e9bb61fa5e98be6f68fe8330fd304c3f0ad38fb5ed27faf7a7baacdcbffb59987eaef3bfd0bfbfd4bfbfd2bfbf3696f94d987e6bd87e17a6df1bb63f84e9739dff42ff7ea97fffa87fffa47fbfd2bf7fd6bf7fd1bf7fd5bf7fd3bf7fd7bfffd0bfffa27fff55fffe9bfefd77fdfbcf30ed699bcab70aeaa6ca20a636aabc26f9ec47c46f17d49f9416cdf5ffe4b744db0bf5bcfc8a762df47c0bc3de52cfb734d6d34acfb732ec6df47c1bc37e829e3fc1b09fa4e74f32eca7e8f9530cfbf97afe7cb02702b837acedcad65c9b0ac026f1da0c6c2db4ad39d85acaeac07694b6b5009b6cdf96603b5adb8e02db31dad60a6c096d3b5ab40c5391b6550671c54ae930b5dee2b8d7ab9f971d1b3fef70b5ded68e788f8b9f77845a6f1b07bc2a3e8ed7eb3a0ee2e6046d6b03b613b5ed78b09da46d2780ed646d3b116ca768db49603b55db4e06db69da760ad84ed7b653c17686b69d06b633b5ed74b09da56d6780ed6c6d3b136ce768db59602bd1b6b3c1a69bdce01cb09dab6d25603b4fdbda82ed7c6d3b176c1768db7960bb50dbce079bb4bf17804dce172fd436d5761c5d00cb68bbb45bc965a4cd06dbc5d25e83ed1269abc1d65eda69b05d0abec5d601da1ab175d43669b7d4ff7ae97c6510d77e5256a3d6db3beef5866b56ebed13ff7a93cf1cfb06755a57829fdea0553f9d8fb15f5367f45da093f8117b21e4af83b2524ef490638fb0ab634c85cef74bb35c2f63b962285361a97f65106ffdfb183c7d0ce616907713b35dbaf8986df09471cc0e84b266ecc97950538cd91b81c341cc76f731dbe029e398ad81b266ecc9b970538cd97b80c341cc56b989d9b2521fb3a9fb6641608f3db91e6a8a313b1a38e28fd9ae3e661b3e651cb34f415933f6e49ab829c6ec54e0883f66bb57f97383064f19c7ec22286bc69edc9f698a31fb2c703888d91adfce3678ca386697405933f6e45e61538cd9e78123fe98ede92866bbf8980d52cf4083c01e7b72dfba29c6ec32e0883f6687fbfbb30d9f328ed9dd50d68c3d7986d2146376b3ceabe70c3fd1cf19ce04db4fb5ed2ce08d3fb6abbb3a8aed321fdba9be2141608f51799ed71463fb439d5771fc0be88f20b65f6a5b5bb0fd4adbce05dbafb5ed3ca897837da0caef030d9e32de077e0b65cd589667cb4d711ff811703888d96a1fb30d9e328ed9bf435933f6a49f43538cd93f00878398adf131dbe029e398fd0f286bc6de453adf146356fa9aaaf3852ff4f9c22560fb52dbda83ed8fda7629d8fea46d1dc0f695b67504db9fb5ad13d8fea26da560fbabb67506dbdfb4ad0c6c7fd7b62e60fb87b69583ed5fb4ad2bd8fe55dbba81eddfb4ad3bd8fe5ddb7a80ed9fdad653dbd4f32ee97b25e7adad80bf328877db4abf4b59b7cc77ce82efd686efd659f4ddc6f0ddc6e2bbcc81ef04f890a9c098af847c995b9ed262e0415fe5f1fbeaa2eade256878ddcb81a7ab83ba27c0474378ba024fb7f87992fd7fbbc7bfdee436ee62689a005f5da05e3d1cd4ab007cc9ba655efc15830ddbd61e16c69ef1339615802f59b7ccf70446b1615b2fef5cc9fea38e87ed0aea781dec4bc97322f127df2d138e72b04b995bdbd6b1b5d76c45f07f3cee75336c8ee2321917e24bd62df3e2af08ead32dfb8c650d65ec6a30ba6a230ac097acdbfbaedb0e92c7e3b8836b1d6b9b26be7b67c1774fc377b9e11bdb4e99d21ddb7a0273ecd79cfad85611ff7a4bf1fa44ae0dc50f9e3fe0355c5c7542df726d287ec45e08f99b0aeaca4a39d143da616157b12cdb12d9cde57a18cb154399de96fa5706f1d6bfc2e0a93098d536b91c8e850ef687640cf4363864be1cb4ab88d0ae376827652e02ed5cb567bd0c1e99ef063cd28e75071e57d744513cd9b81e3b9c6f3c87c5eb67f93f9e07b8da5e9d0d4699b76daf9ec0683b5771703d93f65ca52b308aad17f07471a459d476ed42e2db41ac24db23f121e7e6b2ff7603bb94e9a95fa8536de5fdd056ba88118c47991a7acd1bff762a4b5e8377cd8007b79d83ebaace8ee2b114efdf7c1dc41b6b66bbd4d5d02aea1e8fabb6bc8bc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae1b09a3d9ffcdd57dfee4f70ff5ba64fdeab9ceff71da1facac14fbc7483f884b8c3a174299e2667565ff1bfa8399cfa9b08f6437b7da25b725f6c7ac8479f1877dad705b32f4772a89cd77d97057cfdbd437c0d47734cdbe9fdd2c9abae8ff8c9a16189a627ffc4b0d1e15a715cdebd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd2ca8df7ee071c655ff1d69abe579796fc377219439a359ddb691be5532c670176339ecf723eb96652e017b85b1eed67a59e16861acbf3b2c2b65ce8636757fb33acd1cb4956599f65dc7e7e6f11f8753cff1bb64c0d319785cb4338ece374a711f88fb39bed93fcd761e2365b06f9f837e9569fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43f279867cab4cd69ffc5e70b33abfae9fc3c933a7f6469df1ddd17f36ab2bbb5de78b8243fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77ea39be8bb121e4397e1743d7728ba6aef6577cc68a9ae2fedad5e0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b675e06adb9795ba6c37f0bb2995c1a1f18ddf53f921b47d3fd679ecc3817d47beb0fc5fa674cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb33aeab40a7fe86068590ffbc595d59292765456b6157fb887c0306d9cde5ba1acb154399be96fa5706f1d6dffcd66a3f83596d939f419c7d01c77f576d52df088d2e018da40c9e07b9ea9367b69166ff46ecb7d7d22883e72c52e66fd04645f51fb5f53974751c8bea73683b37ee0c8c661dcd7e9ef9de4feb3fa1bd88bb9fd67f420c613fadc0587f7b58bf70b50ca28f2d52e6ff19eb37cfc96519ec07f63ffd9fe07b2e653a9fc939f991babeb29d93e372517557ccf81db4ca189931269005cf13a4cc315a6bd9661511dc3d2dcb16472c2b5a99df0a2b0a0ed5cfcd77d652fb7c3fa32e12d7f80d72297302d4c5cd794bea1cd0d537e52aa14e2a5f66a9ab943915f6b5d3753e01db09f7db8b2dff9729dd39208ee17e59fc754e6edfcb81b312fca0ef2b803526df9dd1b79c038a1fb11742fea2e67565a59ce8215a0bbbda47e43c0ad9cde57a1bcb154399fe96fa5706f1d6ff3283e73283596d93b320ce2e867ee8aedaeafe111ab5078da40cde53b47d07d4768c71d5b73fea1853068c66bb89c749976ce67b42e67d35db3982949165f11ca13bb4b3094b59f37ea11c2fe3ec378cef4a7407bff8ae84ab6f37f702dd2a611ecf0b8ea46f17dfb155fea2c64ce89505df51632664c3771bc3779b2cfaf69a7bcd993477300641f2fd33fc66a99ad29d97e2b804b25c33607431964322a8ffedf1c331e2f80eb25c736074717cc8f4dbe7dd8151962b044617ef96e2f81b0d61c46f0ce3715e181d7c2bb67363bf158bf7f45a0223d33b9bf86cea286074710fb5b1efeae1f97c2bf875352e51970c18f17c5e963b1a185ddc1bc767830d61c4eb2259ee186074f10c2bd3f19df0dbf3786fd92563ba63bbe3be286599de7ba970cb93f65c037d3b18d730a905de673c9c167ddcf2a43df741df0eeefb25b5c071060fa7053e1b7431ee6122a8ff1cee703cf8fc52963b1e182b1d31f6cb80b11218ffe75e3130f677c4589901637f6014fb89c0e8e0fe6b92b17f068c789f52963b09182f77c47859068c9703a32c773230bab8979a00bf0d61bc021865b95380f14a478c5764c0782530ca72a702e3558e18afcc80f12a6094e54e03c6ab1d315e9501e3d5c028cb9d0e8cd73862bc3a03c66b8051963b0318af75c4784d068cd702a32c7726305ee788f1da0c18af034659ee2c60bcde11e37519305e0f8cb2dcd9c0788323c6eb3360bc011865b97380f146478c3764c0782330ca7225c0789323c61b3360bc091865b9b6c078b323c69b3260bc191865b97381f116478c3767c0780b30ca72e701e3ad8e186fc980f1566094e5ce07c6db1c31de9a01e36dc028cb5d008cb73b62bc2d03c6db815196bb1018ef70c4787b068c7700e3ed16c6018e18efc880710030ca729702e39df13326afa50764c07827f0dc153f4f52b33b33e0b9cb2d4ff2bb7a775a7cdd1dbfafe4b6181834bcee7703cfa0f87992dbe2ee0c7884a1189643cdee899f31a9d9a00c18ef019ec1f1f32435bb27039ec1a0d93d16cdee8d9f31a9d9e00c18ef059e21f1f32435bb37039e21a0d9bd16cdee8b9f31a9d9900c18ef039ea1f1f32435bb2f039ea1419d66f759341b163f6352b3a119300e039eaaf879929a0dcb80a70a341b66d16c78fc8c49cdaa32601c0e3cd5f1f324351b9e014f356836dca2d988f819939a5567c03802786ae2e7496a3622039e1ad06c8445b391f1332635abc9807124f08c8a9f27a9d9c80c78468166232d9a8d8e9f31a9d9a80c184703cffdf1f324351b9d01cffda0d9688b660f3862bc3f03c6072c3c717f27fb7e8bafb18eea3e266878dd85a11896c37e12e31c318ecd80711c30ca72d84fa2d611e3b80c186b8151964b38664cd74fa2167c8f8fdf77b25daa0d1aaecf78b73c69fb49a0ef098eb4181f345c8b096e79d2f69340df131d69312168b81613816792032d12e0a3213cc2500ccb613f89c98e182765c03819186539ec2731c511e3e40c18a700a32c87fd241e74c4382503c607815196c37e12531d313e9801e3546094e5b09fc4438e18a766c0f81030ca72d84f629a23c68732609c068cb21cf69398ee88715a068cd3815196c37e120f3b629c9e01e3c3c028cb613f89471c313e9c01e323c028cb613f89471d313e9201e3a3c028cb613f89c71c313e9a01e363c028cb613f89c71d313e9601e3e3c028cb613f89271c313e9e01e313c028cb613f89271d313e9101e393c028cb3de09831ddf5cb934ddc77d4b54a53f71d755dd2d47dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993efa71cf84e800f990a8cf94ac80b43312cf780676cd28cc853121f4f29d61d7d3d4d50f7a72d3c058eea8ebe9e21a8bb30e41ae35339c088fbb8d7b1f18c8e752c6b2ca3e279d611cf3319f03c0b3c331cf13c9b01cf0ce099193f4f32a66664c0230cc5b0dc0339c0f8540e307a1dbd8e4c8c5ec7fcd1d1337a46cfe8198f04632eb4e19e3127e2b1acb18c8a6756fc3c49cd6666c0330b3493e5eeca01c6a77380f129b78c658d65543cb3e3e7496a362b039ed9a0992c77975bc6b2c6322a9e39f1f324359b9d01cf1cd06cb64533078c658d65543c73e3e7496a3627039eb9a0d91c8b660e18cb1acba878e6c5cf93d46c6e063cf340b3b916cd1c3096359651f1cc8f9f27a9d9bc0c78e68366f32c9a39602c6b2ca3e259103f4f52b3f919f02c00cde65b3473c058d65846c5b3307e9ea4660b32e059089a2db068e680b1acb18c8a6751fc3c49cd1666c0b308345b68d18c95f1811c607c2a07181deb58d65846c5b3d811cfa20c781603cf738e781667c0f31cf03c1f3f4f32a69ecb8047188a61b9077280f1a91c60f43a7a1d9918bd8ef9a3a367f48c9e3133c6a77380d16f6bcfc8cae8e0fa2aedbb48cf3571df51ef223575df51ef223575df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f771cee4fb85f87d9765fa8d991780c7c5376f1cd5b354adf745bdaeaf63d44f69f592a1d5738656c550e645d0ef2507fa15805f59b7cc8bbf4c99db11303bf25d766cb88ea3a1fee2e329430fe5ff6547758f6aeb5f6ee2bea3dafaa6ee3baaad6feabe7d9cfb38cf07df3ece7d9ce7836f1fe73ece597c63be455077de2edf3f55eb7845e70bf5bc947f1aec52e6e1a352bfad03bf0fb9f0edf7217facc807df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b738c870959e0090c9e200dcf2c329e6a329e81643cd793f1f423e3594cc6f310194f0f329e31643cf791f1dc46c6f32419cf55643c8f93f17426e39944c6339b8ca7868c671019cf8d643cfdc978a693f17420e3e946c6338e8c671819cf1d643ca5643ccf92f15c43c6938df79732e1e948c65341c633858c670e19cf28329e8bc9780693f15c44c6733319cfe5643cc792f1b426e32927e379848c673c19cf70329e3bc978ae23e3e94bc6b3888c672a194f4f329eb9643cf793f1cc20e31942c6732b19cf95643c9790f13c46c65346c6d39c8c672219cf08329ebbc978da93f1dc40c65349c6338d8ca73b19cf3c329eb1643c43c9786e27e379868ce76a329e27c8787a93f14c26e31949c6730f194f3b329e9bc8782e23e32922e32926e3e94ac6f33019cf7c329e5a329e99643c55643c03c878ae25e3e943c6b3908ce741329e5e643ca3c978ee25e3b9858ce70a329e4e643c8f92f11c47c6d3868ca70b19cf02329e02029e4470e8182609f8ff0b606b662cab3efbfa42dbbaffbfaaedcd6099d774beb965ddaf824dbe25fb9a6559d4e955a84ba5ce977eb329a913faaa8479f157041caf91f02c20e3e942c6d3868ce738329e47c9783a91f15c41c6730b19cfbd643ca3c9787a91f13c48c6b3908ca70f19cfb5643c03c878aac8786692f1d492f1cc27e379988ca72b194f31194f1119cf65643c3791f1b423e3b9878c672419cf64329ede643c4f90f15c4dc6f30c19cfed643c43c978c692f1cc23e3e94ec6338d8ca7928ce706329ef6643c7793f18c20e39948c6d39c8ca78c8ce731329e4bc878ae24e3b9958c670819cf0c329efbc978e692f1f424e3994ac6b3888ca72f19cf75643c7792f10c27e3194fc6f308194f39194f6b329e63c9782e27e3b9998ce722329ec1643c1793f18c22e39943c633858ca7828ca72319cf0b643cd790f13c4bc6534ac6730719cf30329e71643cddc8783a90f14c27e3e94fc6732319cf20329e1a329ed9643c93c8783a93f13c4ec6731519cf93643cb791f1dc47c633868ca70719cf43643c8bc978fa91f15c4fc633908ca79a8c671619cf040bcf0b8e78e47d7759b7ccbf40e2dbc1762855eb7ddd519dded0eb6aa1d72bfce2af10cacc3c26f5ab9e0fe1b2c2657e9f00efc5bd011abde1a82eb23d0a8ced83be5f71e4dbfc5eb3ccbfd2c47db7367cb7ce13df6d0cdf6df2c4b78f731fe7f9e0dbc7b98ff37cf0ede3dcc739936f07d70665f89d34990a8cf94ac8e3f5828befcb39aa67bdebc4af63d44f69f5a6a195796d550c655e07fdde74a09fedda53e6c55fa6cced0898312e4a8278e36249fc752a53fd328f065d9718fa62bd963ad234ea18b2b489fb8e3a863475df51c790a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc9f75b3a1fe3756329fa50cf17e57ae02df0bb5ce70b62f4abd6b54cafab50af5b3896835dca344ba47e5b077e9f77e1dbeff3fed8960fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c9b79e92f7e11b0b9eacf1f158bd97897e048fa8e8ac5a6ee3b2a169bba6f1fe73ece997caf70e03b013e644ad7c76f05f02c73c0e3a89ec9671b2b8d3abd60d4a918cae0317ea5837a16805f59b7ccaf041e9926008f8b3868c836479e59643cd5643c03c978ae27e3e947c6b3988ce721329e1e643c63c878ee23e3b98d8ce749329eabc8781e27e3e94cc633898c6736194f0d19cf20329e37c9786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e8e643c15643c53c878e690f18c22e3b9988c673019cfcd643c9793f11c4bc6d39a8ca79c8ce711329ef1643cc3c978ee24e3b98e8ca72f19cf22329ea9643c3dc978e692f1dc4fc633838c670819cfad643c5792f15c42c6f318194f19194f73329e89643c23c878ee26e3694fc67303194f2519cf34329eee643cf3c878c692f10c25e3b99d8ce719329eabc9789e20e3e94dc633998c672419cf3d643cedc8786e22e3b98c8ca7888ca7988ca72b19cfc3643cf3c9786ac9786692f15491f10c20e3b9968ca70f19cf42329e07c9787a91f18c26e3b9978c672919cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243dffd4fc0ffdf049bbca3fe02d856e9fc32b035b3f868aef32bc156a8f3b28ea3c2b4b4eda1eb469d5cbd978fbe2a615efc1501c72a129e05643c5dc878da90f11c47c6f328194f27329e2bc8786e21e3594ac6732f19cf68329e5e643c0f92f12c24e3e943c6732d19cf00329e2a329e99643cb5643cf3c9781e26e3e94ac6534cc65344c6731919cf4d643cedc878ee21e31949c633998ca73719cf13643c5793f13c43c6733b19cf50329eb1643cf3c878ba93f14c23e3a924e3b9818ca73d19cfdd643c23c8782692f13427e32923e3798c8ce712329e2bc9786e25e31942c633838ce77e329eb9643c3dc978a692f12c22e3e94bc6731d19cf9d643cc3c978c693f13c42c6534ec6d39a8ce758329ecbc9786e26e3194cc6733119cf28329e39643c53c8782ac8783a92f15c43c6f32c194f2919cf1d643cc3c878c691f17423e3e940c6339d8ca73f19cf8d643c6f92f10c22e3a921e3994dc633898ca73319cfe3643c5791f13c49c6731b19cf7d643c63c8787a90f13c44c6b3988ca71f19cff5643c03c978aac9786691f14cc80e4f997ab75dde9d0c800ba74ac8af049e371de8e3a89ea5f85d83af635cafd2ea6d43aba58656c5506605e8f7b603fd0ac0afac5be6c55f2e322b1e39a71356fc0ec493248c627bd32d4f72bf7d32a83fa5db6fdf061e17ed9aa37a26f7afd5469d9eb4e82e653056573ba8a76ddf91f9d5b01d728d59f13ca3f3c29a8072cf90308a6da55b9ee4fef54c507f4ab77fad061e17ed8fa37a26f7af35469d9eb1e82e653056d738a8a76ddf91f935b01d728d59f13cabf3c29a8072cf92308aed6db73ce509a8b34ce9f6af35c0e3a2fd7154cfe4feb5d6a8d3b316dda50cc6ea5a07f5b4ed3b32bf16b68367f6cc3666c5237db1853501e56690308a6db5539ef2d204d459a674edd85ae071d1ce3bd23dd98ead33ea34c3a2bb94c1585de7a09eb67d47e6d7597c9704f16ab1be015aacb7f0accfb216e22f53e61539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5cca0b3e291b111853501e56692308a6d8d5b9ee47b413383fa5381315f09f9f5c0b3d6813e8eea99ec43bec1a8d34c8bee5206f7af0d0eea69db77647e036c874c98d7e520b3d7b971cc8a6796ce0b6b02cacd226114db5ab73cc9766c56507f4ad78e6d001e17edbca37a26dbb18d469d6659749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3755e5813506e3609a3d8d63be5294bbedf383ba83fa56bc736028f8b76de91eec9766c9351a7d916dda50cc6ea2607f5b4ed3b32bf09b64326cceb7290d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a678ece0b6b02cacd216114db06a73c5d92cf1de604f5a774cf1d3601cfc6d87952cf1d1ce89e7ceeb0d9a8d31c8bee5206f7afcd0eea69db77647e336c87a6cebc2e07997d6c6487d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f1ccd579614d40b9b9248c62dbe89627f9dd83b941fd295dbf9dcdc0b3c9813e8eea99ecb7b3c5a8d35c8bee5206f7af2d0eea69db77647e0b6c07cfec996dcc8a679ece0b6b02cacd236114db26b73cc9766c5e507f4ad78e6d011e17edbca37a26dbb1ad469de65974973218ab5b1dd4d3b6efc8fc56d80e9ed933db9815cf7c9d17d604949b4fc228b6cd6e7992edd8fca0fe94ae1ddb0a3c2eda7947f54cb663db8c3acdb7e82e653056b739a8a76ddf91f96db01d3cb367b6312b9e053a2fac0928b78084516c5bdcf29425a0ce32a56bc7b6018f8b76de513d93edd876a34e0b2cba4b198cd5ed0eea69db77647e3b6c875c63563c0b755e5813506e2109a3d8b6bae549ee5f0b83fa53bafd6b3bf0b8687f1cd533b97fbd63d469a145772983b1fa8e837adaf61d997f07b643ae312b9e453a2fac0928b78884516cdbdcf224f7af4541fd29ddfef50ef0b8687f1cd533b97fed30eab4c8a2bb94c158dde1a09eb67d47e677c076c83566c5b358e7853501e51693308a0d8f178b1df1141b3cc5162d8e946f35df5be78bf46f02fedf1b185db5878b0d4699c718475ed79ab536785a1b9a1d49dfaafe153a7facfec5ed55018c0cdbab7516346b63f0b431343b92be95167d74fe38fd8bdbab0f30326caf36c0e3a07d2e4f183c6a4a77beb1c3b13e8eea993cdfd819d875c7e39094c163f74e07f5b49d4bc8fc4ed80e9ed933db9815cf009d17d604941b40c22836bc4ed9153f4f79c2e05153ba766c97637d1cd533d98ebd1bd875df05ba4b198cd5771dd4b300fccaba65fe5dd80e9930afcb4166af73e39815cf409d17d604941b48c228b69dc0f35efc3ce50983474de9dab1f71cebe3a89ec9766c7760d7fd3dd05dcae0feb5db413d0bc0afac5be677c376c884795d0e327b9d1bc7ac7806e9bcb026a0dc201246b1bd0b3c7b62e7498d07843c6a4ad78eed71ac8f9b7aa6dab1f703bbee7b40772983fbd7fb0eea59007e65dd32ff3e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a67b0ce0b6b02ca0d266114db6ee0f920769ed47307e45153bae70e1f38d6c74d3d53cf1df60676dd3f00dda50cc6ea5e07f52c00bfb26e99df0bdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219a2f3c29a8072434818c5f63ef07c183f4f79c2e05153bae70e1f3ad6c7513d93cf1df60576dd3f04dda50cc6ea3e07f52c00bfb26e99df07db619f67f6cc1666c53354e7853501e58692308a6d2ff0ec8f9d27f5fc1479d494ae1ddbef581f37f54cb5630702bbeefb41772983b17ac0413d0bc0afac5be60fc076c884795d0e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d8f601cf47b1f374294d183c6a2a30e62b21ff91637ddcd433f5dce16060d7fd23d05dcae0fe75d0413d0bc0afac5be60fc27668eacceb7290d9c74676987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308aed00f07c1c3f4f79c2e0515381315f09f98f1debe3a89ec97e3b9f0476dd3f06dda50cee5f9f38a86701f89575cbfc27b01d3cb367b6312b9e1a9d17d60494ab216114db41e0f9347e9eb284c1a3a674edd8a78ef57154cf643bf65960d7fd53d05dca60ac7ee6a09e05e057d62df39fc176c83566c5334ae7853501e54691308aed13e0711077499e628347e63f25f0ade66b75be48ffe2f6aa054686ed559c05cd5a1b3cad0dcd8ea46f55fff13a7facfec5ed351e1819b657eb2c68d6c6e069636876247d2b2d26e8fc71fa17b7d7046064d85e6db2a0d9916c0f8fe4be7d24e3d46b7ee4342f38829a171c41cd0bbce6549a3b38be94e1b12c00069c2a21ff19f07c3b7e9ee47db9cf32e0f936f07c2b7e9ece8eea59aad6fb1d608f6bbd4aabef1a5a7d6668550c6590e1bb0ef42b00bfb26e99177f9ed9334731e3b9adb026a0dca7248c62fb16f0b8683754dd3be875c9fa5b84e9cb13ebfcba785e82f78a5be8f50a87f82b8432d34aeacafe59b315c1ff65bba9fa1c346c8ede61ee6c7b6e27f3e2af28c8dabddbb4f792510b17cf9b323dee1fb4f07c1d1f4f29eee7e8eb80a3ba67f2ecef808527c6ba778e7aeeb93ffeba27db8f8e7a5db27eb58ffed7894e352fc77d4fda8f8e469d0ba1cc8092bab25f43fb616b2b5cef9b724e6eee9bcd82baf64cb84ab4dd7c26f4b5b64bb98fa13cb639bdf52fee9fbda1aeaedac5a87b4cd82e9a6db74bedcde792a6ef62d0e56352cd6ccf2950c70a0b77050137c66336f73359b7ed195985a1239b66b8ad3fb6e8d8c7c2dd87809b71bfee63e8c8a6d9e1f6eb0116ee0104dc8cfbf500434736cd0eb75f0fb4700f24e066dcaf071a3ab26976b8fd7a90857b100137e37e3dc8d0914db3c3edd7832ddc8309b819f7ebc1868e6c9a1d6ebf1e62e11e42c0cdb85f0f317464d3ec70fbf5500bf750026ec6fd7a68505f4736cd0eb75f5759b8ab08b819f7eb2a434736cd0eb75f575bb8ab09b819f7eb6a434736cd0eb75fd758b86b08b819f7eb1a434736cd0eb75f8fb2708f22e066dcaf1bda6f9f75bfaeb570d7127033eed7b5868e6c9a1d6ebf1e6fe11e4fc0cdb85f8f377464d3ec70fbf5040bf704026ec6fd7a82a1239b66b6fddad1bb8419bfdbf889537d52634c7f9201cf47c0e322a61cc541a9a37e2ec9bea9fb0dad3e31b4c2b13b0e807e0efac2a4fd2681f8f3cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccf8cdf65c4e72b52ee631246b1e1332917f7f955dd3be975c9fa5b8469c0c9757e0fc4eeb7acb4c0f057091ce2af10ca9c7b4e5dd9bb355b5170e876c3b1b8715bee8bbd0ea96d69c6bfcc8bbf22a8cf7ee071f07e7e92e780c173c0a205be771a8fefb2e16e342e2b55dfc73b3aa8dbcefb8cfaa0a61fc6eebfbea60586a61f3af69d08ea6f4f61c0a912f2c8e3e2d9b0a37a26db82bd469d4c8d8ba14c3ba8e75e07f52c00bfb26e99df0b3c32e13379573118183c81451f999a91f15493f10c24e3399f8ce77a329e53c978fa91f13c44c6d3838ce768329e31643cf791f1dc46c6730e19cf55643cd93807cf84e771329ece643c2790f14c22e32924e3a921e33948c633888ce742329e1bc9782e25e3399d8ca73f19cf74329e6e643c1dc87812643ce3c8788691f1dc41c6534ac6d3968ce71a329e93c8782ac8783a92f14c21e36949c6338a8ce762329ec1643c1791f1dc4cc6732619cfe5643c8f90f19493f11c4bc6d39a8c673c19cf70329e3bc978ce23e3b98e8ce714329ebe643c53c9787a92f1b422e3b99f8c670819cfad643c6793f15c49c6730919cf63643c65643cc793f14c24e3694ec633828ce76e329ef6643c1790f1dc40c6731a194f2519cf34329eee643cc790f18c25e3194ac6733b194f0919cfd5643c4f90f1f426e339918c6732194f0b329e91643cf790f1b423e3b9898ce70c329ecbc8781e26e3e94ac65344c6534cc6534bc65345c633808ce75c329e6bc9784e26e3e943c6f320194f2f329ea3c8784693f1dc4bc6730b19cf59643c5790f17422e3398e8ca70d19cfa3643c5dc8780a087812c1a1df624ac0ff0f804dbe19f411d89a59d627cf61a5bc3a2eae6d7be8ba9b59d6fda1850175fa00ea52a9f3a5df6c4aea84be2a615efc1501c787243c5dc8781e25e36943c6731c194f27329e2bc878ce22e3b9858ce75e329ed1643c4791f1f422e379908ca70f19cfc9643cd792f19c4bc633808ca78a8ca7968ca7988ca7888ca72b19cfc3643c9791f19c41c67313194f3b329e7bc8784692f1b420e3994cc67322194f6f329e27c878ae26e32921e3b99d8c672819cf58329e63c878ba93f14c23e3a924e3398d8ce706329e0bc878da93f1dc4dc633828ca73919cf44329ee3c978cac8781e23e3b9848ce74a329eb3c9786e25e31942c6733f194f2b329e9e643c53c978fa92f19c42c6731d19cf79643c7792f10c27e3194fc6d39a8ce758329e72329e47c8782e27e339938ce766329e8bc8780693f15c4cc6338a8ca72519cf14329e8e643c15643c2791f15c43c6d3968ca7948ce70e329e61643ce3c87812643c1dc878ba91f14c27e3e94fc6733a19cfa5643c3792f15c48c633888ce720194f0d194f2119cf24329e13c8783a93f13c4ec6b39f8ce72a329e73c8786e23e3b98f8c670c19cfd1643c3dc8781e22e3e947c6732a19cff5643ce793f10c24e3a926e36946c633c1e0c1ffab77c3e4fc48be1d5408ff9fae3b97b7d6eb9232f28e92bad7f5be6153f5dde3a8beef07755325ccef81fa0afbfbc0f3be239e0f0c1ed37711e42b40b3dd864d31bee78871b7c128f3ef01a3e8b71b78763be2d963f098be8b20df07347bd7b029c65d8e18df3518657e17308a7eef02cfbb8e78de33784cdf45901f009aed346c8a718723c69d06a3ccef0046d16f27f0ec74c4b3cbe0317d17417e2068f68e61538cdb1d31be6330cafc766014fdde019e771cf1ec30784cdf45901f049a6d336c8a71ab23c66d06a3cc6f0546d16f1bf06c73c4b3dde0317d17417e3068b6c5b029c6cd8e18b7188c32bf191845bf2dc0b3c511cf5683c7f45d04f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37711e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf4590af02cdd61936c5b8d611e33a8351e6d702a3e8b70e78d639e2596ff098be8b205f0d9aad316c8a71b523c63506a3ccaf0646d16f0df0ac71c4b3d6e0317d1741be06347bdbb029c6558e18df3618657e15308a7e6f03cfdb8e78561b3ca6ef22c88f02cd561a36c5b8c211e34a8351e65700a3e8b71278563ae25965f098be8b205f0b9a2d376c8a719923c6e506a3cc2f0346d16f39f02c77c4b3c2e0317d17417e3c68f69661538c4b1d31be6530cafc526014fdde029eb71cf12c33784cdf45909f009a2d316c8af14d478c4b0c46997f131845bf25c0b3c411cf5283c7f45d04f9dbc126bcbdc0f686cef704dbeb3adf036cafe97c77b0bdaaf3ddc0f68ace7705dbcb3a5f0eb69774be0bd85ed4f932b0bda0f39dc1f6bccef705db733adf0f6c8b75be126c8b74be3fd816eafc65605ba0f397836dbece5f01b6793a7f25d8e6eafc55609ba3f357836db6ce5f03b6593a7f2dd866eafc75609ba1f3d783ed599dbf016ccfe8fc8d607b5ae76f02db533a7f33d89ed4f95bc0f680cedf0ab6bb74fe36b07da2f37780ed539dbf136c9fe9fcdd60fb96cedf03b66febfcbd60fb8ecedf07b6efeafc30b07d4fe78783edfb3a3f026c3fd0f99160fba1ce8f06db8f74fe7eb0fd58e7c780ed273a3f166c3fd5f97160fb99ce4f04dbcf757e12d87ea1f393c1f64b9d9f02b65fe9fc8360fbb5ce4f05db6f74fe21b0fd56e7a781ed773a3f1d6cbfd7f987c1f6079d7f046c9febfca360fb42e71f03db973aff38d8fea8f34f80ed4f3a8f63ddfe59e74b8278dbd9af82baa9047c8b3f55e62f3adfd22823cb1642998eba83a37ac6a1be652aedb0b4cbca26edf01b609376f875b0493bfc1ad8a41d7e156cd20ebf023669875f069bb4c32f814ddae117c126edf00b609376f879b0493bfc1cd82a757e31d8a41d5e0436698717824ddae105609376783ed8a41d9e07366987e7824ddae1396093767836d8a41d9e0536698767824ddae119609376f859b0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c30f804ddae1bbc026fbcb576093b6f913b049dbfc29d8a46dfe0c6cd2367f0b6cd2367f1b6cd2367f076cd2367f176cd2367f0f6cd2367f1f6cd236ff006cd236ff106cd236ff086cd236ff186c6375fe276093b6f9a76093b6f9676093b6f9e76093b6f9176093b6f9976093b6f9576093b6f9d76093b6f9376093b6f9b76093b6f9776093b6f9f76093b6f90f6093b6f973b049dbfc05d8a46dfe126c4fe8bcb4d5adc026cf8ad554fa0d271c8707cff985a93288b7edc7a912f28f43dd656a46c6f31c194f3519cf40329ef3c9784e25e3b98b8ce768329eb9643c2f93f1fc918c671d19cf5a329e9d643c3bc878ce21e3d94fc67302194f2119cf22329e1a329e37c8780e92f10c22e3b9908ce752329ed3c9783e21e3e940c69320e379918c673619cf1a329ed5643cef90f16c27e32925e3694bc67312194f05194f47329e96643c0bc8784691f1bc46c6733119cf60329e8bc878ce24e339968ca73519cf4c329ef1643ccf93f1bc4dc6b38a8c671b19cf56329ef3c878f692f17c40c6730a194f2b329e79643caf90f10c21e3399b8c670919cf25643cc793f13427e3594cc6b3928c670519cf9b643c5bc8783693f1b427e3b9808ce77d329e3d643ca791f11c43c633878ce725329ea1643c25643cbdc9784e24e36941c6b3908c673919cf32329ed7c9783691f16c24e3f98a8c673719cf7b643c6790f11491f11493f1cc22e3a925e379818ca78a8c670019cfb9643c2793f1f421e3398a8c673e19cf5b643c4bc9785e25e3d940c6b39e8ce75d329e5d643c6791f17422e3398e8ca70d19cf0c329e02029e0470046093ff3707db973a7f106cf2bd9efd60fb42e79780ed739d7f026c8f5a6ccd2c7cc2f025d8e4dde6c7c026f73fbf009bbc13f039d8e4bc4afcabf9ad6d0fe56f06cb889fe6167ef4f7b9854bf2b8bd6599ca20deed8dbe2a8343bfa754041c8f91f0cc20e36943c6731c194f27329eb3c8787691f1bc4bc6b39e8c670319cfab643c4bc978de22e3994fc67314194f1f329e93c978ce25e31940c65345c6f302194f2d19cf2c329e62329e22329e33c878de23e3d94dc6f31519cf46329e4d643caf93f12c23e3594ec6b3908ca70519cf89643cbdc9784ac8788692f1bc44c633878ce718329ed3c878f690f1bc4fc67301194f7b329ecd643c5bc878de24e35941c6b3928c6731194f73329ee3c9782e21e35942c6733619cf10329e57c878e691f1b422e339858ce703329ebd643ce791f16c25e3d946c6b38a8ce76d329ee7c978c693f1cc24e3694dc6732c19cf99643c1791f10c26e3b9988ce735329e51643c0bc8785a92f17424e3a920e339898ca72d194f2919cf76329e77c8785693f1ac21e3994dc6f322194f828ca70319cf27643ca793f15c4ac6732119cf20329e83643c6f90f1d490f12c22e32924e339818c673f19cf39643c3bc8787692f1ac25e35947c6f347329e97c978e692f11c4dc6731719cfa9643ce793f10c24e3a926e3798e8ca71919cf040bcf12473cd27745d62df34b9ab8ef3d86ef3d79e2fb3dc3f77b79e27b97e17b579ef8de61f8de9127beb71bbeb7e789efad86efad79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e65f85e9527be5718be57e489ef6586ef6579e27ba9e17b699ef866befe56df79926f41ecd5bf09f83f8e1fb7df11e3128351e6f703a3d870fcf7de8e78a2aedd7b13f8565a48df4579873e01ffaf00465731d5db6094795b4ce178a3158e78a2ee395410f8565ac8b71ce59b5809f83f8e9fe22aa62a0c4699b7c5148effd5c7114fd4bd923e04be9516f22d47f9067002fe8fe313b98aa93e06a3ccdb620ac79b18e08827ea1ecf0002df4a0b791623cfcc13f0ff81c0e82aa606188c326f8ba91dc033d0114fd4bda98104be9516d2f74cfa2c27e0ff8380d1554c0d341865de1653db816790239ea87b6a83087c2b2de4dd2879873501ff1f0c8cae626a90c128f3b698da0a3c831df144dd0b1c4ce05b693144e7e51b3909f8ff1060741553830d4699b7c5d466e019e28827ea1ee61002df4a8ba13a2fdfe04cc0ff8702a3ab981a6230cabc2da6703cdfa18e78a2eebd0e25f0adb4a8d2f90dfa3701ffaf0246573135d46094795b4ce1786d558e78a2ee195711f8565a48df18e9339880ff5703e350478c5506a3cc0f0546b1ad059e6a473c51f7baab097c2b2da4affb1afd9b80ffd700a3ab98aa361865de1653ab81a7c6114fd43dfa1a02df4a8b513a2fdff048c0ff4701a3ab98aa311865de1653ab806794239ea8670ba3087c2b2d64ec03f9265f02fe8fe365bb8aa95106a3ccdb626a05f0d43ae25966f02cb36871a47c2b2de4db2fcbf56f02fe3f1e185dc554adc128f3b6985a063ce31df1443dcb194fe05b69217d3bdfd2bf09f8ff0460741553e30d4699b7c5148ebf3cc1114fd433a80959f01df53c251bbea39e0d64c377d47dee6cf88eba679b0ddf51f71fb3e13bea5e5a367c47dd17ca86efa87b1cd9f01d75bd9e0ddf51d79ed9f01d751d950ddf51d704d9f01d757e9b0ddf51e76ad9f01d75dee1db73df9ec7edfb489e3be46b7b7e248fa147f258e2af0dfcb541b67cfb6389bf36c896ef7cbd36f0ed79f6db73b9fe2a08a2afc75639f2bdc2f02df3f89c658523dfcb0cdf328fcf0c9639f2bdd4f02df378ff7ba923dfc5866f995f9a05dfad0ddfadb3e8bb8de1bb8dc5b783ed5d9608ea5f7f0b034e9590c71878cb81168eea59aad6bb5cafebeb18d76bbb6f63ee2fc5506639e8e7baed90759b6d472e32635c14c4e7bb34013e649c3b6593e7c76f804ddafdd7c126fd025e039b1c9b5e059b3c937a056cf2ccea65b08dd2f94fc026cf8eb1cfbe3cffdf05b62a9dc7bee243757e07d8a42f15f65196fe70dbc1267d1ab16facf44bdd0a36e95b8c7d32a57ff866b0491f7fec0b28ef696c049bbc6b837dd0f6ebfc7ab0c97735b1efd3173abf166c5feafc1ab03daef3abc1f688cedf05b63fe8fc57607b58e79782edf73aff16d8a6ebfc72b0fd4ee75f02db6f75fe45b04dd3f917c0f690cee3bb6cbfd1f90fc03655e7f11daa5febfc1eb03da8f3f8eeceaf74fe3db0fd52e79f07db149d7f0e6c93757e31d87ea1f38bc03649e71782ede73abf006c13757e3ed87ea6f3f3c0f6539d9f0bb6713a3f076c3fd1f9d9601babf3b3c03646e76782edc73a3f036cf7ebfc1fc1f6239d5f06b6663abf026c322622f65391ef7cae029b8cf58dfd8f64fc8309603b4ae7c783ad95ced7824dbe0d370a6c32be700dd8123a5f0db6229daf029b9c9f0d059b8c0f33046c722e35186cc7e9fc20b0c979cf40b0c9788d03c026df20ed03361987bc026c32f6406fb09dacf34bc02663b2ed079b7c27ee20d864ece32fc026df87fe126c67e8fce36093716a1e01db593aff07b09dadf30f834dbe29fa7bb095e8fc74b0b5d5f9df81ed5c9dff2dd8644cb3696093efd03d0436193bf8376093ef3d4f055b3b9dff35d82ed2f907c12663bffc0a6c32fee52fc1d65ee7a7804dbe7b3d196c1d74fe176093f1382681ad93ceff1c6c32eec244b075d6f99f81ad4ce77f0ab62e3a3f0e6ce53aff13b075d5f9b160eba6f363c0d65de77f0cb61e3a7f3fd87aeabcb4336a7f56fbf9013d5f19c4775ea6fc7d14d49fd25d1b0803f2c479ae5d0c3ce86b5fec752f4b9ed74b5bd04caf5762681ff8de1bbbefd435c5877a5d857abd7b0ddf8550a654370e6a3939e637d7cbed3796c3fb58b26e59a613d83f30d6dd5ad7f74347f5dd6b300937ea2065ca35933a36fe42e71dbdc39fbc3e96580b40439c2a212f0c6eb42a2bc573e186f07c083cfb62e7495dafbb8809dcb7e2be5e37efe39ab1560c65f6827e1f38d00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ae780cee3b36629778084516cfb80c7c57d7e7c0e2beb57cf753e3ea7ceefbed8fdd67fbed742afb7d4a873219469595257f65b9a0dc71e95ed16b52d1d3c274cbb2dc55f11d4079f051d70c4b3cfe0d967d142f225b1f92e1bee46e3b252d597453d63df6fe87ac0a2a9abfd759f5e5781a129eeaf1f193cf86cb408783fd6bf0958cfc7500707fb78dab8107fb82fed039be43f024617db198f25d21ec8f3707c362d65be309e8bc7bfedcb4a5db61bef439d2a8343e3bb10cafc199eb7ff55e7b16fc801d0ed7f5bfe2f53bae7d4a29faaf3eef8eb9cdcbeef016725f841dfef026b4cbeebbd4353a093f8117b21e4ff17f4e79072a287682dec6a1f913e9dc86e2ef791b15c3194d963a97f65106ffd771b3cbb0d66b54dfe0171f6bfe1f8efaa4dda13a15127d048caec038df63be2d967f00887f8536564fbb734cac8b28550e6bfa18d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf81870721defbed87973abff57eb92d42fb6eb71f5ff9275b7d6cb0a4760acbf14d62f5c2d83e8638b9439a1a46efd2efb97ed37ea2c2ca8b39439a524f5abe2ec269dcfe45cff485db7459debef71c09308ea5f7bab29ddf11d8f31ef3be07154cf52dbb1eb03a34ec550a61dd4d3c1794cda778177836f17db1cb59073a8bd86168550e6e292d4afb41d513ae2b5ea8759a94b99f57cb0d4521729d3a9a4ae2eadc01e2793cbedf62ed449ad779fa5ae52a6bca44e976e3a9f80ed84f74daeb4fc5fa674ed018ec5b333fe3a27b7ef0ee0ac043fe8fb1d608dc977bd6f81c8f9bef8117b21e4af28a92b2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3cb52ffca20defaef3478761acc6a9bf42ca9cb4b1cb96c37774568540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452e6f692d4af6a671396b2e6bd6117f731f1ddd200ea111875950963c0c1b561395e3b493b257e3a827d9fce8bce1d0ded0aa1ccbd25a95f87e7ddd67b97e6f51d5e5308b7b96fe1bb1f552575dc2aee653bedd3bf4560fb54ff3aba4e2bb7dd33140edb3dc3512575ecb8ac707d62a98b798ddc2c38f49efad74659bcef966e39f4a5a683c6324adf4f2d4cfb0c3fad60d9d8ded5e85c5a1ac57f10f83e32986dbaca7e8031b74fe7cd7d05af8da5ccd492d4afb4496659b5edffebc43a7d643b8a76d89e604c7e048c953a5ffacda6e43e77d0a8bfcc8b3fc528f77b0e024ffc6d57ea7da54cee03ef071e176dbba336ba148fb1ad625b6fcf2adbf1ff2343ab2c3eafb51ef3cd67eead8c7c3cbecbaa6df79f6c5aecb5f0b87a8e12a5c55e8beff8b4e836dcd6ced9b4c866df87282d3eb0f88e518b1abcef994e8bf72d3c2eee45a5d3e27d8beff8b4e85e9aeeb9066ab1c7c2e3eade439416e22f53e60f08985b19f9787c9757d9ee93d9b4d86de17175dd1ca5c56e8beff8b4e8dc0defd1a5d3e23d0b4ffcf7e7d26bf19ec5777c5af4e889f7f0d269f1ae85c7d533dd282ddeb5f88e312e46d8eee5d8b4d865e1d995652d76597cc7787ed8cd76afcda6c54e0b8f83fbae69b5d869f11da316c3f0be6b3a2d7658787664598b1d16dff16951d5d5764fd8a6c53b161e57f784a3b478c7e23b3e2d86f550beb737408bed169eed59d662bbc5778cd750c9b8d8d6002db65978b665598b6d16dff169519d3cd7dada002db65a78b666598bad16dff169519a3ca66e6980165b2c3c5bb2acc5168bef18e322793db9b9015a6cb6f06cceb2169b2dbe633c8e24e3625303b4d864e1d994652d36597cc7a7454df2fed3c60668b1d1c2b331cb5a6cb4f88ef19e4b322e3634408b0d169e0d59d66283c5777c5a74491e53d737408bf5169ef559d662bdc5777c5a8c483e135bd7002dd65978d665598b7516df319e7726db8bb50dd062ad85676d96b5586bf11de37967f2fec59a0668b1c6c2b326cb5aacb1f88eb1ed4c9e77ae6e8016ab2d3cabb3acc56a8bef18cf3b935abcdd002ddeb6f0bc9d652ddeb6f88ef1bc33791c59d5002d5659785c8d8112a5c52a8bef18e322d976ae6c80162b2d3c2bb3acc54a8bef18ef6b25dbce150dd0628585c7d5780d515aacb0f88ef17a24798f6f7903b4586ee1599e652d965b7cc7f8ac28790ebeac015a2cb3f02ccbb216cbc0f7fed87da7fa738b0fe98bd5c1d0a210ca5cd836f52b7db1a274947560bf32accb5bb1d725d5af6c69445dde82ba48994ba12ead02276314953baa6b326696409dd47a3fb6d455ca746e5ba74b179d4fc036f90474bbccf27f990a8cf94ac88b7eaace6fc45fe764acbe0e9c95e0077dbf06ac31f9ee8cbe0b74123f622f847cffb67565a59ce8215a0bbbda47ded4796437975b662c570c65deb4d4bf3288b7fe6f183c6f18ccc9f71e20ce248edcb45d29a6372334ea001a4919ecb3f7b1231eb30fa170883f5546b67f4ba38c2c5b0865ae83360afb954a3d13c1a1fd261db5659d915dd62df3e2af186cfb81d1aca38a8f2fa1efa78c1521e348289b8c0bd105d6d3ddb0a9baf6705457f125eb96f91ec028e35474cf3e63594319bb198c8aa79703cd70ec0d99d21d2f7a014f4f073c8eea993c0ef536ead4c3a8533194c1771b7b3ba86701f89575cb7c6ff0ed629ba316724cbed8d0a210ca8c32ce1fa3749475a8f8ed6ea94b5fc77591754bbbd4370bbe2b0cdf5d0ddf89a0fe760e82f4fb570530f771c0acd6db2ffef596e2799bc494f8e90a75ea0f1ac455275c979ce7f537b42d84fca3709e27e5a4ac1cbf845dc5b26c4b643797eb652c570c65fa5aea5f19c45bff7e064f3f83596d9389706ee7607f48c6405f8343e6bb8276fd22b4eb0bda49193cfe7577a45d1f83a78fe15bf1c8394e6fb0c9b982f027e0ff5db2c06db67bbd2ddc62c371e26ce73adde2674c7baed30d18c5d607782a1c69666eeb8b0d7df0b8dcd22823cb164299e7e0d898b09455fb5dbb82ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6382bab11a274dae9d386ce488db46a41e3d0a5aa18189bf05966a34031be69b5b6c41507f48ca42b0c990942dc0d6cc900587c294f232a49d0bb9500f5977a1c1d90a58e2f48dc379ca942e748e021e17a1ac424786f4d4a173d7c4d19347607cb430381b133bea7fcdd3948b5a97abed60ee1395306fc660a123ffcda1be95302ffed4b629d6f9f1c3863fd07fe2c82963478c9b3c098532776ccc1704f53780f91b25b8ab9d0e03002b8c8d430ba35ed860c8ff64c31c133f67398e996b6a13803f998e01dd8e76a09b5abf8c7d3b7cd89831b74ca91a337af85553c60d9f3cba761c6ecd568672515b5afedf126cb6261ecbaa099b2d5cf6288bcd36e128c3adc02647aea3c1263cc780ad39e4a5bcb9659c846b3b58bfec52ea7f4a9c16bae247057521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e3d480d1dac860a3e2b480d05acbe765112a486f63d37480ddd7b7e901a9af742e0fb36305f14a44ebbd4d0baed83d4d0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a49fd6ba7f982e0bd3e561ba224c5786e9aa305d1da66bc2746d98ae0bd3f561ba214c3786e9a630dd1ca65bc2746b986e0bd3ed61ba23480def7c67901a7e5d0dff7c77901a1afa9e20356cf4bd416a48e9fb82d470d3c382d450d4c383d430d52382d410d62383d4f0d6a383d4d0b90f04a9a176c706a9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f2f420350cb31ab2f9d1303d16a486747e224c4f86e9a9303d1da667c2f46c901a1e5c0d1b3e2b480d33ae861f9f1ba4862b9f1fa4863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f394caf84e9d520f548423d8a518f28d4ed7ff5184cdda27e2b48dd3a5f1ea41e71ab47feaa0b84ea12a2bac8ac09525da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aaf705a9dbe20782d4a352753b5c3d1a50b7ccd5edfbcfc2f4ad201593df09d377c3f4bd307d3f4c3f08d30f83d410c66ab863355cb21a5a590db9ac8667564339aba1a0d510d1bf0e52434faba1ab7f17a486bffe43983e0f5243707f19a4865fff5398be0ad39fc3f49730fd354c7f0bd3dfc3f48f30fd4b98fe354cff16a67f0fd33f83ba61b6b121395db73efa0a26183679f288b1e327974cae2d193b65cce4d1e3c74c2b993a7af2a892da07474cac19533b1517feb65e58c608ef3f71e2b06925a3c7558f78a8a476cae492da9a92aada29e3aaeb1dc4ffaa173af3508fc3aaaba39dfdc73721fdbf8d747ab46e1765f4f56bd3d7ada879230439be310b756bdeb80a4dd74730b9d4bd3d751e5c32694cede492d29271e1dff0c05b3b754475c712fcdfa450e449934b264d1e36717249cdc4dab1259d3be27a671cd3884a1424dcc07438bd71e274d2df596a54887d7e4e2314f8fa9cc6911e5bf20d488f2f699cd38b4a1a51c38e8d59e8b646120e2e899465d294aac913870d9f1cbdf0b06fb2f0c8c654f3c14656f382b68d70d6be310b5ddbb67184231be36c7106ce82ff0f4e77936acc5606009b2d6c6f00000028441f8b08000000000000ffed9d777c1cc775c7f7d0580e471024c15ea046b3828743071bd83b654ab27a214882222d92a048a859962559927befdd728be5de7bac543b8913278e1dcbbd57c945f927713ec9e7e34f66f6e6193f0c77cf38681ff816f7f6f379bcd987b97ddff9ed9bd9bd99bde39341106482e2566deca2e0dc8dfedee75ef34f6d6b4df058794ece4c4a38ab52c2599d12ce9a9470d6a684b32e259c9352c23939259c5312e4b46c55c1c82d69dea90cba26cd984d99a6f529d03497324da7a540d386201d63d4f4947036a68473464a3867a68473564a389b52c2393b259c7352c23937259cf352c2393f259c0b52c2b930259c8b52c2b938259c4b52c2d99c12ce0b52c279614a382f4a09e7c529e1bc2441ce95c0b9d4bd3ecdbd2e73afcbddeb0af74aef59e55e57bb36d6b8fd16636b2c9bb156ef6f05636dc6da8d75787feb34d665acdb588ffb5bb3fb5bafb1b5c6d6195b6f6c83b18d4e874dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d8d38d1d307699b1cb8d5d61ec19c6ae347695b1ab8d5de3b15c6bec3a63d71bbbc1d88dc66e3276d058bfb143c60e1b3b626cc0d85163371b3b66ecb8b1671abbc5d80963278d9d323668ecb4b15b8d9d3176d6d890b1db8cdd6eec0e63771abbcbd3ec59c6ee36f66c63f7789ccf3176afb1fb8cdd6fecb9c61e30f6a0b1878c3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b1d0b7584b7197bbbb1878dbdc3d83b8dbdcbd8bb8dbdc7d85f187bafb1478cbdcfd8fb8d7dc0d8078d7dc8d8878d7dc4d8478d7dccd8c78d7dc2d8278d7dcad8a78d7dc6d8678d7dced8e78d7dc1d85f1afba2b1478dfd95b1bf36f637c6fed6d8df19fb7b635f32f66563ff60ec1f8dfd93b1af18fb6763ff62ecab9ee6ff6aecdf8c7dcdd8bf3bdfd7ddeb375c5d9a17fb0f63df74e5c7dcebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef571f7fa847bfd8d7bfdad7bfd9d7bfdbd7b7dd2d8d54dc5f2e46078eb0b121aa3da8fe6ed9a0a89bf3418b9592daadddfe8b5d9f96bdc3ebd9276b56ebfd6f3d7b9fd3aef3893ddfe64cfdfe8f61b3dff4cb73fd3f337b9fd26cf3fc7edcff1fc17bbfd8bc19f0d60ced5f9adafdab932e0a37cad025fadf35583af8e0e07be49ce570b3e3abf75e09be27c93c037d5f926832feb7c53484b63f5ced71724952bf97e7bdc5cd2c775eb50d392e73d6c8fdbc0c43b3d79de017bdc46065e9b1f33dcb1a643decc74be46f0cd72be19e07343d09ffa9cf5cd76be59e09be37c4de09beb7cb3c137cff9e6806fbef3cd05df02e79b07be85ce371f7c8b9c6f01f8163bdf42f02d71be45e06b76bec5e0bbc0f99680ef42e76b061f3de37201f82e76be0bc17789f35d043e1a6b2f061fdd1b5ee27c769c989c81f7383f8d51e17b687c06df321a9bc1b79cc665f0ada031197c2b2136f956c1b842bed5ce476394fd5baf2bf70549f58942d827d6267d5c73647bdcf5c91f375cb7db100c6bdd0771d682561b5d39c167835a3176c619c5217f0d9477415daa477ad07586d8edf5649d2b6f2cf1be5eef7d39a8b32ea2fd7d41b2ed5feff1acf7986ba1fd3c39db56d09c1df55676ce5e0575fddca37b9e8998b37b818321673b356747bd959db30350d7cf3dbaef9d88397b2d7030e46c3f4fce16f29ab3c539b22088ce3dfaec331173f61870249fb31d9ab3a3dfcaced9fba1ae9f7bf4f97722e6ecedc0917cce76f5ebbdc1a8b7b273f6e550d7cf3d9a8b998839fb207030e4ec808eb3a3decaced9b7425d3ff7685e7022e6ecab8023f99ced61cad936cdd9a0b8de1904d1b94773d41331671f068ee473f6b0cecf8e7e2b3b673f0775fddca3f5928998b31f7665bbcef075b7ceb0107cdf70be45c09b7c6e1f6967caed82e676f139902088ce515abb9b88b9fda82bdb3c7e0c9e3d20dfb79cef02f07ddbf92e04df779cef226817431fe8d73e30eaadec3ef03da8ebe732ad234fc43ef035e060c8d9c39ab3a3decaced9c7a1ae9f7bf44cc344ccd91f020743ce0e68ce8e7a2b3b67ff0075fddc5be6ca133167e9b9527bbff06377bfb0027c3f71be95e0fba9f3ad02dfcf9c6f35f87eee7c2de0fb85f3ad01df2f9d2f0fbe5f395f2bf87eed7c05f03dee7c6de07bc2f9dac1f71be7eb00df6f9daf137cbf73be2ef0fddef9bac1f7a4f3f5389f5defa267afbee27cf6dc92467d41b2e7969eb1a463d3feaa7188dde0c56e18c7d88d5eecc688d8ab19626721066d196fbf0fcaab7979f2b960e4f73f28d69ae463b5d9b6b704a36ffb1ae0c933b43d0b3146c393079ed6e479c2677d0bc91f373cc72d9ea65988d502ed6a6368570662d1b1699fe2e5c087e3775b04637bf28c850cc4a263d37e3b30920faf27745da7fe63af874b33c3bc0c7d29bc27a278f4db5fc4b106fc54e7bf670db3ad706cf5f077bcb6b67a3ea6bc0cf38262d1b1699fe2d5437b5ac79fb1305ac6bcc7c835466420161ddb8f8dfd7df5f86b36aaf39a03df7918930a631d93ea816d3cee53e2ceb594d81cd7ab0cc4a0b18d342f809feacc765f48b063db0e187719fa5fa1dcfb371c0f92cfe3421efbf56878da8087a3ef33f5d73c5ef7ff18249b6b1d9e56ad9e5639a8d30efa7530e857ea3e84e229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c667cfe02d737a9de2a218ce42b000fc73c7ff8fb51ee58747cbbaef36d58d7497edda290c7354b7ac670b9d7e61aa8f34466b8eef7613ddd5f1bc435cd55bcda8dea398bfae0dcb558ce35c4b875e0a8f5cbe6c462170e73adb7d9df50b1bf43d6e2e9ba2a425386e75446689af134c5e714577a3c364fe7550fb371acfd95bb16895a5139c9b53d7cc680f7bc14c70fca85aa60e4f881d799cec4638f5cc3a4f5f24e2f760dd4f99fccf0b9a16751e9ff39f49f79b275babc63d37b9683bfcb3b76837b2f71d47ac76f81f7529dff8331f56d55c19f34e378fe03c7e500da8a5b1f9471dd3cf9eb70711dbfad0c9e0ee0e1186798ee37f2d807925ec7eff2b48aba8fa13a9da05f17837e51f7a2b44ff194599995599995599995599995599995599995599995599995599995599995593e337e579458b350af2084719c9e7d08d733e8f75fe8f8765de72555c371b9d7e168cd6985d7e61aa8f3d5aae1baaf70e5fae0dce71de2ce25c37a5ec97349f1eaa13db816c4f57dee768fa73d420b2a372716bbb88e9fbcc6c3ebf86d9eae85084db9fa2baeb1a2a6d85f5b3d1e5c1bad0fce7db6240bc7198f6787e2f282e2615f6a071f95f1fbd11ce719af25fe733d140fd7af1f71da36045ce7be90e71c37baa14d7dc1b9f95d03753e0463df475c199fe1c067471e8df83b6da5d6a9493f96dfb2cb17d77dd702671fc4c1d8eb8035a1d8ad183be38ce290bf06ca5fac1aae4bf5480fd29ad86d1fa1df044376ff7daddefb7250a727a2fd7d41b2edeff5787a3d667b4e3e0e79f6285cffb9c6a49e188d9683465407ef83b89ec9f3c748fff9467c6eafceab83f72c54e7cb3046c53d3f1af5cc21d7752cee99c3a87be30e60f4dbe83fe759e9cf693d06e345d2cf693d063984cf6905def157c0f189ab2e88bfb6509def7ac7f7efc9e93df81c18d5f9018c170dee99c5fae0dcfb6f7c666a3c3e5fc53d274df1f0be06fbf69f6bbb65ee86fa7d0932634e200bde27509d5f79e7ac2b867b4dc47b9f88792f69b5da95f1f38baf9fd5a107ded397880ec53edfebb585f2ba07da4275fed3bb074cfebea5780f987c5b47de93d038d01ed156aaf35fd0d7fe00f778749ef073475df5b97fa7add43d20e967db3cdebf0f8cb125fc3e706df5705dff777e49eb727f1fb8d37b9fc4df07fe5fc8b33a780e9d6bac5e17a3d10ad088eae07783e83a82bfe51b35d771be3e4fe78273e709f03ac973df147dfdf3e7d5a2ee1156781ae33dc22cc7dce074f6ebfaf38574bd4cf2b961fcae440bc4c5ef4ab430e99907ddfa601fef0bce67ec3c53ecb8df9cce8f43ecb8df9c1e8fd88d5eecc6718cad9aabe6923467f84de4f0fb67f89ba5762b755f4a0c39785f550a18ab53c0589302c6da1430d6a58071520a1827a780714a0a18a7a680310b8ce7f3dacea04f61acfa709daf52f71a187b359316e5fcff1dccff974ac97b1f8ccdf0992ed46275307a2df0731ec76f3f94fb7fbd1003fedf053352c03833058cb352c0d89402c6d929609c9302c6b929609c9702c6f929605c9002c68529605c9402c6c529605c9202c6e614305e9002c60b53c078510a182f4e01e32529605caa8c8930aee4652c8c95d1f270fc9f7f4fe5ff1c63e0c9473d73caf4dd93b2ffbf35e6df276d1debefc6e1b325bcff27dc53fb6d3b8e6747cafd6dbb52ffdf2a136361ac8c5ccf02e17347a3e1897a3ea89597b1305646aeefbfe077f446c3d3099a754468c6c058182b23d7b372e53ecb89cff4774668c6c058182b233e579d204fa85957193cdda0595784660c8c85b132723d979c8518a3e1e901cdba233463602c8c9591e9bb6da1663d65f0e077c07a223463602c8c95d1f2ac65d2acb70c9eb5a0596f846692189127e9dfc9ee8d88c5f19dc172db4e0cc83825058c5353c088cf49708c5fa59e93e8e5d5a730567db8ce57a9e7243036c3f763422df0fb107f4e8bf5bc3c259f93c0d81b98b4c0efabfc392d36000fc7f767b21063343cc49083f7cd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1b32ac3bd62c9cf2f1b2678ecb8cf2a133d76dce792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d73fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e233886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430edeb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6610c57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1fb5a53c0d89702c68dbc8c85b1325a9eedc9f3849a6d2b83673b6846ef6be5652c8c95d1f2ec489e27d46c7b193c3b40b3ed119a313016c6ca68797626cf136ab6a30c9e9da0d98e08cd18180b6365b43cbb92e70935db5906cf2ed06c6784660c8c85b1325a9eddc9f3849aed2a83673768b62b423306c6c258192dcf9ee47942cd7697c1b30734db1da119036361ac8c96676ff23ca1667bcae0d90b9aed89d08c81b1305646cbb32f799e50b3bd65f0ec03cdf646682695716d0a1837a6809159c7c258192dcf7e269e7d65f0ec079e4b9978f697c17329f03c3d799e30a72e2d83871872f0beb52960dc980246d5517594c4a83a568e8ecaa88cca581e635f0a18f55c2ba3544686cf5725bf8b74e9048fdde0c56ea890d871df459ae8b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cd7349b10f241fbb50ee6fcc1c001e8edfbc616a67de1ef73277ac3f26a89fd5ea724fab4b3dad7250e732d0ef7206fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85730b53d6eacbf6282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3f7edf4fba7f618cf70e51ab78face4a73a574f2abe3604da8738626b1fd26b4525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826797309eedc278ba85f17408e32908e3592c8c67ae309e19c2783609e399228c67b9309e6a613c79613c4b84f1ac10c6334f18cf783cdf5c0ecf4c613c9b85f14c15c653238c678d309eddc2787a85f1ec10c6d3238c67ab309e4e613c4b85f1b409e36911c6335f18cf2c613c2b85f16485f1d40ae3592d8c67af309e75c2789609e359208ca749184fbd309e9c309e3a613cfb84f1ec11c6b35e18cf4e613cdb84f17409e3d9228ca75d18cf2a613c0b85f1cc16c6334d184f83309e49c278f60be359248c678e309ee9c2781a85f16c10c63359184f46004f3638f737c9b2f0f703e0abf2de6bc7cf9ea6e1bf5fe9fc55f09eab5cb93ae2d857828fbe1b7e55c47b51a72ba12d7dae9c7f6a5ba813c6ea837d8a570f1c5709e1992c8c6783309e46613cd385f1cc11c6b34818cf7e613c9384f13408e399268c67b6309e85c2785609e36917c6b345184f97309e6dc278760ae3592f8c678f309e7dc278ea84f1e484f1d40be36912c6b34018cf32613ceb84f1ec15c6b35a184fad309eac309e95c2786609e3992f8ca745184f9b309ea5c2783a85f16c15c6d3238c6787309e5e613cbb85f1ac11c653238c67aa309ecdc278660ae339208c679e309e15c2789608e3c90be3a916c6b35c18cf14613c9b84f1cc10c6335718cf62613c05613c1dc278ba85f16c17c6b34b184f55040fc3ff7f19f2d0f36b746cda3f202436c37908ffdfcfab99da748d3b56ad3b2ef153bc1aa873c85d88edf328f85ee2f29f37c47bf56b40a36b98da42e723e39d1fe6d8057cae320086c0d32788e0e1781e95a99d23f230c1ff7f366fb5bad6d3ca3f7739a87335e8772d837e51b94dfb142f8dcc96879e1d25d62cd4db2084917c57f0f284fd764330722bd56faf051e8e318ca99d61ffbace6bd38608dda90ee6ea750ced8cea3bb47f1d9c87b4315b1efa6c48ac59a8b7490823f9aee1e509fbd7a660e456aa7f5d073c1ce30f533bc3fe75bdd7a64d11ba531dccd5eb19da19d57768ff7a380f6963b63c34374eac59a8b7590823f9aee5e569cf429b692bd5bfae071e8ef187a99d61ffbac16bd3e608dda90ee6ea0d0ced8cea3bb47f039c076556e62866cb43cf9c136b16ea6d11c248beeb5879daf35968336da5c6b11b8087639c67d23d1cc76ef4dab4254277aa83b97a23433ba3fa0eeddf1811bb3948568b9b46a1c54d113c378db31614af5ce6ab53c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc72c4167cb43bfd947ac59a8b7550823f9aee7e509bf17b43518b965bcfd3e28df043c3730e8c3d4cef019f2835e9bb646e84e75b07f1d64686754dfa1fd83701e0e96c17c630a9955e7b1315b1efabf1688350bf5b6096124df0dbc3ce138b62d18b9951ac70e020fc738cfd4ce701cebf7dab42d4277aa83fdab9fa19d517d87f6299e322b731cb3e5a1dfcc22d62cd4db2e84917c37b1f214c2ef376e0f466ea5c6b17ee03998384f711c63d03d1cc70e796dda1ea13bd5c15c3dc4d0cea8be43fb87e03c94c37c630a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d2d0ffddf84c49a857a3b843092ef202b4f5bb8eeb02318b965bcfd3e281f029efec4798aeb0e0cba87eb0e87bd36ed88d09dea60ff3accd0cea8be43fb87e13c4c74e61b53c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f2ec746562cd42bd9d4218c9d7cfcb13feeec1ce60e456eab99dc3c07388411fa67686cfed1cf1dab4334277aa83fdeb08433ba3fa0eed1f81f3a0ccca1cc56c7976b932b166a1de2e218ce43bc4cb138e63bb82915ba971ec08f0708cf34ced0cc7b101af4dbb2274a73a98ab030ced8cea3bb43f00e7419995398ad9f2ec766562cd42bddd4218c9779897271cc7760723b752e3d800f0708cf34ced0cc7b1a35e9b7647e84e7530578f32b433aaefd0fe51380fcaaccc51cc96678f2b136b16eaed11c248be23bc3c852cb499b652e3d851e0e118e799da198e63377b6dda13a13bd5c15cbd99a19d517d87f66f86f3903666cbb3d79589350bf5f60a6124df002f4fd8bff60623b752fdeb66e0e1187f98da19f6af635e9bf646e84e7530578f31b433aaefd0fe31380f6963b63cfb5c9958b3506f9f1046f21de5e509fbd7be60e456aa7f1d031e8ef187a99d61ff3aeeb5695f84ee540773f538433ba3fa0eed1f87f3903666cbb3df9589350bf5f60b61241f5e2ff633f1e43c9e5c84161331768317bba14262377ab11b2b24b6e6b9e67925c4d63cd73caf84d89ae79ae79510bb52734d35af4ccd33e751f3cc79d43ca39a8bd4fc8fc9c5eec071a50a621d636a276e7d50c6f939daba85f17408e32908e3592c8c67ae309e19c278a608e3592e8ca75a184f5e18cf12613c2b84f1cc13c6335318cf54613c35c278d608e3e915c6d3238ca75318cf52613c6dc2785a84f1cc17c6334b18cf4a613c59613cb5c278560be359278c6799309e05c2789a84f1d40be3c909e3a913c6b35e184f97309e76613cab84f12c14c6335b18cf34613c0dc2782609e359248ce780309e39c278a60be36914c63359184f46004f3638f7fb28f87d826af0d1f3fdfbc1f74c573e00beaa8818749ce3e0a3f9533a861dffb6369dcb5005efb92582eb9911f128ce2d11ef1d0fdd31561fec53bc7ae0b84508cf64613c8dc278a60be399238ce780309e45c2782609e36910c6334d18cf6c613c0b85f1ac12c6d32e8ca74b18cf7a613c75c27872c278ea85f13409e359208c6799309e75c278560be3a915c69315c6b35218cf2c613cf385f1b408e36913c6b354184fa7309e1e613cbdc278d608e3a911c6335518cf4c613cf384f1ac10c6b344184f5e184fb5309ee5c278a608e399218c67ae309ec5c2780ac2783a84f1740be3a98ae039c0c413f77b0a0704c4b6fb79d0c56e59f8fb787c0ff080c748fbc78011798927cfc413f71b147901b16dfbe9b304ad7965e1eff83d2eae9cca7b8cb41f9553f89cdc1a269eb8dfed582320b6d582e62ee919802cfc1dbfb7c095536b3c46da8fcaa9465e9ef0ff96581d8cdc4a3d6b847d8ee31c32b5338ffd2fc1dfd088fc2dead59e56f81baae3f1dc63dc7840f1945999e3982d0fcd3d132b5ecfc6e37b93a3618cbabe32f084e3634b30722b353e1e031e8eeb07533bc371ec84d7a69608dda90ee6ea09867646f51dda3f1111bb3948568b93a3d0e26404cfc971d682e295cb7c2085cc1274b63cab5c9958b3506f951046f2e57979c2f1715530722b353e9e041e8eeb07533bc331e194d7a65511ba531dec5fa718da19d57768ff149c8772984fa49059751e1bb3e5a1395262cd42bd821046f21d63e529e4b3d066da4a8d63a78087639c67d23d1cc706bd36152274a73ad8bf0619da19d577687f10ce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b63cf45d4262cd42bd36218ce43bc9ca535c77680b466ea5d61d068187635d8649f770dde1b4d7a6b608dda90ee6ea69867646f51dda3f0de7419995599995599995599995599995599995599995599995599995599995599965335b1efa4d6962cd42bd76218ce43bc5cb137e6fab3d18b9955a77380d3c1ceb324ced0cd71d6ef5dad41ea13bd5c15cbd95a19d517d87f66f85f3a0ccca1cc56c79e8b7a488350bf53a8430926f9095a7b87eda118cdc4a8d63b7020fc738cfa47b388e9df1dad411a13bd5c15c3dc3d0cea8be43fb67e03c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece9687fe8f3362cd42bd4e218ce43bcdcad316ae3b740623b752eb0e678087635d8649f770dde1acd7a6ce08dda90ef6afb30ced8cea3bb47f16cec344673e914266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b96a7cb9589350bf5ba843092ef565e9ef0770fba82915ba9e776ce02cf19067d98da193eb733e4b5a92b4277aa83fd6b88a19d517d87f687e03c28b33247315b9e6e5726d62cd4eb16c248be33bc3c852cb499b652e3d810f0708cf34ced0cc7b1dbbc367547e84e7530576f63686754dfa1fddbe03ca48dd9f2f4b832b166a15e8f1046f2e175b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701f15cef7528c001870eb83327e56e0b8f7646a673eeaf3d87aaf4df8790ce71cced7e70d6556e63866a6798bf6ac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986decdb938fdd9ef562933e81c743dbedcc5a30b5331c0fee08a235a67839a883797a07433b3310978e4dfb77c0792887f9440a9955e7b131dbd877261ebbf87bf2189bf4093c1edaee64d682a79dc5f1e0ae205a638a97833a98a77731b4330371e9d8b47f179c076556666556666556666556666556666556666556666556666556666556666596cd6c633f2bf1d8c5f97b8c4dfa041e0f6dcf62d682a79dc5f9fbbb83688d295e0eeae039bf9ba19d19884bc7a6fdbbe13c28b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb36c661bfbd9c9c70ebf8f83b1499fc0e3a1edd9cc5a30b5339cbfbf2788d698e2e5a00e9ef37b18da9981b8746cdabf07ce83322b7314b38dfd9cc46317d7f33036e913783cb43d87590b9e7616c7837b83688d295e0eeae039bf97a19d19884bc7a6fd7be13c94c37c2285ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece36f67d89c76e0be7ef3136e913783cb4ddc7ac054f3b8bf3f7f707d11a53bc1cd4c13cbd9fa19d19884bc7a67d8a5709cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3c67e6ef2b1c3efb3636cd227f078687b2eb3164ced0c9f7f792088d698e2e5a00ee6e9030cedcc405c3a36ed3f00e7419995398ad9c67e30f9d885ac179bf4093c1eda1e64d682a99de178f05010ad31c5cb411d3ce70f31b4330371e9d8b4ff109c87b431e3f9cb24173b7c6e936254b957eb7b9e2b5783eff9ae5c03be17b8722df85ee8ca75e07b912b4f02df8ba16de47b892baf04df4b5d793df85ee6caebc0f77257ee05df2b5cb9077caf74e521f0bdca956f03dfab5df976f0bdc695ef00df6b5df94ef0bdce95ef02dfeb5df959e07b832bdf0dbe37baf2b3c1f72657be077c6f76e5e780ef2dae7c2ff8deeacaf781ef6dae7c3ff8deeeca4bc1f77084ef1daefc5cf0bdd3951f00dfbb5cf900f8deedca53c0f71e579e0abebf8032bdbed795ebc1f7882be7c0f73e579e06bef7bb7203f83ee0cad3c1f741576e04df875c7906f83eecca33c1f711579e05be8fba7213f83ee6cab3c1f771579e03be4fb8f25cf07dd295e781ef53ae3c1f7c9f76e505e0fb8c2b2f04df675d7911f83ee7ca8bc1f779575e02be2fb8329edfbf74e507c147e3ca43e0a371e579e0a371e5f9e0a371e505e0a371e585e0a371e545e0a371e5c5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828efde083ecabb37818ff2eecde0a3bc7b0bf828efde0a3ecabbb7818ff2eeede0a3bc7b187c9477ef001fe5dd3bc1d7eccaef02df05aefc6ef05de8caef01df45ae8ce3ccc5aefc5ef05de2ca8f808fc6c2f781ef69aefc7ef02d73e50f806fb92b7f107c2b5cf943e05be9ca1f06df2a57fe08f856bbf247c1d7e2ca1f03df1a57fe38f8f2aefc09f0b5baf227c15770e54f81afcd953f0dbe7657fe0cf83a5cf9b3e0eb74e5cf81afcb953f0fbe6e57fe02f8e83a4ee38cedcfb65f920ea491f5519b5b22da42bec9d096be20d97b3a8a45c7a6fd3660a47350187fc6c268195b3d46cbd3c1a019e6156da53e3375004f3b030f533bc3cf4c9d5e9bdabc36e5a0ced3a09d9d0cedcc405c3a36ed77426c8e738e5ad4bae32ef3b4a8813a397741b3d7d3523ad2316cfe1622dad2c3dc163a368d4b3de310bbcb8b9df762e3784c5ba9fed505ccdd0cccf6b8bdc91f37ec5f6bddb128a7284e1edab40e3448aa4d183be38ce290bf06ca17360dd7a57aa4075dbf88dde6329d4b64f7dfd7e1bd2f07757a22dadf1724dbfe5e8fa7d763b6e7644ed33007437f0873a0c7e3a0fd3c68d71ba35d0f684775f0fa5760d2aedbe3e9f6625b1ebac7e9041fdd2b103fde67b58c03b73fee75467093af0b18a3ee755a93672c79afd30a8ce4eb069e2e26cdfc73bdccd307afcb755e1d7a6f0dd4e9826b6336a2aeed774b33c3eda2cfe07f0c921dd3eb18f4c2f98100f4093c0d03d08bda59cbc03335189e23383b3478a6ffe681cb06fa8f6400adc6c3c4d74c4433aac087e5ea089fdd702a04a764692a04a764e9bd38254bc7a5faf6a3946d164d370c9c3c3ef48c5303a70e9fb9ebf4d0c091bd833723351d1d7dd550ae8af1d744f8689b1c0c4fdaf405c92ec6d479b14a25cf64789d943c4f2b533bc38bde14af4d755e9b7250a716fe3685a19d19884bc7a6fd2911b1131c88422da68e428ba9113c53c7590b9cf8261ff654fa3b2e9e54796dc11e8d6df2f33cd10651c0a570fc8c83b37fb39dbdd6356652307cb269f4b477b4f624d819537bd5b233a27606d40e417686d3ce68da8b9a9db1b433947646d2ce40da19473bc3686714ed0ca29d31b43384cd417106d0cef8d9193e3ba37709b07d0578eda76a7b85b433727606ceceb8d93b2bfb89cdde8dd8bb6f7ba768ef0eec5d81fd64696719ecd5d6dec9d8abb4bdb2da3b457b8768efe8ed1dae5da5da606ca3d37a93b1cdc6b618db6a6c9bb1edc67618db696c97b1ddc6f618db6b6c9fb1fdc62e35f6f4a038bb7e99b1cb8d5d61ec19c6ae347695b1ab8d5d63ec5a63d719bbded80dc66e347693b183c6fa8d1d3276d8d8116303c68e1abbd9d83163c78d3dd3d82d41f1099d93c64e191b3476dad8adc6ce183b1b1457ccec0a995d11b32b6076c5cbae70d9152dbb826557acec0a955d91b22b50f705c51526bb52645786ecaa805d05b0b3fe7696ff05417116dfcedabf3828cecadb59783beb6e67d9edacba9d45b7b3e67696dcce8adb59703beb6d67b9edacb69dc5b6b3d67696dace4adb59683beb6c67991f0e8ab3c876d6d8ce12db59613b0b6c677ded2cef23417116d7cedada595a3b2b6b6761edacab9d65b5b3aa7616d5ce9ada59523b2b6a6741edaca79de5b4b39a7616d3ce5ada594a3b2bf945638f1afb2b637f6dec6f8cfdadb1bf33f6f7c6be64eccbc6fec1d83f1afba7a09897ff6cec5f8c7dd5d8bf1afb37635f33f6efc6be6eec1bc6fec3d8378d3d66ec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec71634f18fb8db1df1afb9db1df1b7b32185eddc041e40f6e8766dafb8786064e9e1e6a1e1a6c3e79db89a1e3a74fdcd57cc7f1a163cd83b70f9c397a62f00e7cf37bddb045cb089bce9ce9bfabf9f8a9230377360fde36d43c78b4f9d0e06da78e9cc5377dc9bd69e1b911fb8f1c890ff6cdaaa740fa9d3106fda57b1f2dd0ec2addb6c7c722c8936379d3cceab135e82a77d5a14fef9717ef769bcf9e181c6ace379f32fff69f30ef1938d2d28c7f3b6b443e3bd47c76a8ffcc50f3d13383279b5b5bf0b8fd53c6d088faa631bca9b369f42d0ffe1fb379eca96d0b0400", -======= - "bytecode": "0x1f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433015c2c12012630674a9464e5409004455a24419150b22c4bb224e79cb3e5749673ce675db4efce77bef339c83947c9e9feb9e77b77eff95df76c97f1a139b3c64253600db6e6bde2f6147aa77efd4d75ef6cf7ec301314b73f18cbb872b5b18b827337fa7b9f7bcd3fb5ad2dc163e539393329e1ac4a0967754a386b52c2599b12ceba94704e4a09e7e494704e4990d3b2550523b7a479a732e89a346336659ad6a740d35cca349d96024d1b82748c51d353c2d99812ce1929e19c9912ce5929e16c4a09e7ec9470ce4909e7dc9470ce4b09e7fc94702e4809e7c294702e4a09e7e294702e490967734a382f4809e78529e1bc28259c17a784f39204395702e752f7fa34f7baccbd2e77af2bdc2bbd67957b6d716dac71fbadc6565b36636ddedf0ac6da8d7518ebf4fed665acdbd81a633dee6fcdee6fbdc6d61a5b676cbdb10dc6363a1d3619db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec526397193b60ec72635718bbd2d8d38d5d65ec6a63d718bbd663b9ced8f5c66e3076a3b19b8cdd6ceca0b17e63878c1d3676c4d880b1a3c66e3176ccd87163cf3076abb113c64e1a3b656cd0d86963b7193b63ecacb12163b71bbbc3d89dc6ee3276b7a7d9338ddd63ec59c6eef5389f6dec3e63f71b7bc0d8738c3d68ec21630f1b7baeb1e7197bbeb117187ba1b117197bb1b197187ba9b197197bb9b157187ba5b157197bb5b1d7187badb1d7197bbdb137187ba3b137197bb3b1b73816ea086f35f636638f187bbbb177187ba7b177197bb7b1bf32f61e638f1a7bafb1f7197bbfb10f18fba0b10f19fbb0b18f18fba8b18f19fbb8b14f18fba4b14f19fbb4b1cf18fbacb1cf19fbbcb1bf36f605638f19fb1b637f6becef8cfdbdb17f30f68fc6be68ec4bc6fec9d83f1bfb17635f36f6afc6fecdd8573ccdffddd87f18fbaab1ff74beafb9d7afbbba342ff60d63df74e5c7ddebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef509f7faa47bfd8d7bfdad7bfd9d7bfdbd7bb56baa973515cb9383e1ad2f48688cea389ab76b2a24fed260e466b5a8767fa3d766e7af71fbf44adad5bafd5acf5fe7f6ebbce34c76fb933d7fa3db6ff4fc33ddfe4ccfdfe4f69b3cff1cb73fc7f35fecf62f067f36803957e7b7be6ae7ca808ff2b50a7cb5ce570dbe3a3a1cf826395f2df8e8fcd6816f8af34d02df54e79b0cbeacf34d212d8dd53b5f5f9054aee4fbed7173491fd7ad434d4b9ef7b03d6e0313eff4e47907ec711b19786d7ecc70c79a0e7933d3f91ac137cbf96680cf0d417fee73d637dbf966816f8ef335816faef3cd06df3ce79b03bef9ce37177c0b9c6f1ef8163adf7cf02d72be05e05bec7c0bc1b7c4f91681afd9f91683ef02e75b02be0b9daf197c748fcb05e0bbd8f92e04df25ce7711f868acbd187c746d7889f3d971627206dee3fc344685efa1f1197ccb686c06df721a97c1b782c664f0ad84d8e45b05e30af95a9c8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282f706b561ec8c338a43fe1a28ef82ba548ff4a0cf1962b79f27eb5c796389f7f57aefcb419d7511edef0b926dff7a8f67bdc75c0bede7c9d9f682e6eca8b7b273f66aa8ebe71e5df34cc49cdd0b1c0c39dba5393beaadec9c1d80ba7eeed175ef44ccd9eb80832167fb7972b690d79c2dce91054174eed1779f8998b3c78023f99cedd49c1dfd5676ce3e0075fddca3efbf133167ef008ee473b6bb5faf0d46bd959db32f83ba7eeed15ccc44ccd9878083216707749c1df55676cebe05eafab947f3821331675f091cc9e76c0f53ceb66bce06c5f5ce2088ce3d9aa39e8839fb0870249fb387757e76f45bd939fb59a8ebe71ead974cc49cfd902bdb7586afb9758685e0fbbaf32d02dee473fb4807536e1734b78bf7810441748ed2dadd44ccedc75cd9e6f1e370ef01f9bee57c1780efdbce7721f8bee37c1741bb18fa40bff681516f65f781ef415d3f97691d7922f681af020743ce1ed69c1df55676ce3e0175fddca37b1a2662cefe1038187276407376d45bd939fb47a8ebe7de32579e88394bf795daeb851fbbeb8515e0fb89f3ad04df4f9d6f15f87ee67c2de0fbb9f3b582ef17ceb71a7cbf74be3cf87ee57c6de0fbb5f315c0f784f3b583ef49e7eb00df6f9caf137cbf75be2ef0fdcef9bac1f77be75b03be3f385f8ff3d9f52ebaf7eacbce67cf2d69d417247b6ee91e4b3a36edaf1a87d80d5eec86718cdde8c56e8c88ddc2103b0b3168cb78fb7d506ee1e5c9e78291bfffa058ab938fd56edbde1a8cbeedab8127cfd0f62cc4180d4f1e78da92e709eff52d247fdcf01cb77a9a6621562bb4ab9da15d198845c7a67d8a97031f8edfed118c1dc9331632108b8e4dfb1dc0483efc3ca1cf75ea3ff6f37069669897a12f85d744148f9efd451cabc14f757e3f6b986d8563ab87bfe3676b9be763cacb302f28161d9bf6295e3db4a76dfc190ba365cc7b8c5c63440662d1b1fdd8d8df5bc65fb3519dd71cf8cec3985418eb98540f6ce3719d1277aea5c4e6f8bcca400c1adb48f302f8a9ce6cf783043bb6ed807197a1ff15cabd7ec3f120f93c2ee4b15f8f86a71d7838fa3e537fcde3e7fe9f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fa26d55b2584917c05e0e198e70f9f1fe58e45c7b7eb3adf86759de4d72d0a795cb3a47b0c977b6dae813a4f6686eb7e1fd6d3fdb5415cd35cc5abdda8eeb3a80fce5d8be55c438c5b078e5abf6c4e2c76e130d77a9b7d868a7d0e59aba7ebaa084d19ee5319a169c6d314ef535ce9f1d83c9d573dccc6b1f657ee5a246a45e524d7f6f01e03def3521c3f2817aa8291e3077ece74251e7be41a26ad977779b16ba0ceff6486cf0ddd8b4affcfa17fcf93add3ed1d9bdeb31cfcdddeb11bdc7b89a3d63b7e2bbc97eafc1f8ca96fad0afeac19c7fd1f382e07d056dcfaa08cebe6c97f0e17d7f1dbcbe0e9041e8e7186e97a238f7d20e975fc6e4faba8eb18aad305fa7533e817752d4afb144f99955999955999955999955999955999955999955999955999955999955999e533e36f4589350bf50a4218c7e9de87703d839eff42c7b7eb3a2fae1a8ecbbd0e476b4e2bbc36d7409daf540dd77db92bd707e7deef10772e19d6f34a9e4b8a570fedc1b520aedf7377783c1d115a50b939b1d8c575fce4351e5ec76ff7742d4468cad55f718d1535c5fedae6f1e0da687d70eebd255938ce78dc3b149717140ffb5207f8a88cbf8fe638cff859e2dfd743f170fdfa51a76d43c075ee0b79ce71630db4a92f3837bf6ba0ce0761ecfbb02be33d1c78efc863117fa7add43a35e9c7f22cbb7c71dd772d70f6411c8cbd0e58138add86b133ce280ef96ba0fc85aae1ba548ff420ad89ddf6117a2618b2fbef6bf3de97833a3d11edef0b926d7fafc7d3eb31db73f231c8b3c7e0f39f6b4cea89d16839684475f03a88eb9e3c7f8cf4ef6fc4fbf6eabc3a78cd4275be046354dcfda351f71c727d8ec5dd7318756ddc098c7e1bfdfb3c2bfd3eadc761bc48fa3eadc72187f03eadc03bfe0a383e71d505f19f2d54e7bbdef1fd6b727a0fde0746757e00e34583bb67b13e38f7fa1bef991a8fef5771f749533cbcaec1befd97da6e99d740fdbe049931279005af13a8ceafbc73d61dc3bd3ae2bd4fc6bc97b46a7165fcfee2eb6775e881f7f425a243b1cff77a6da1bcee81b6509dfff2ae0193bf6e295e0326dfd691d724340e7444b495eafc37f4b53fc2351e9d27fcde51577deedf692b750d48fad9368ff7f38131b684e703d7560fd7f59ff34b5a97fb7ce02eef7d129f0ffcbf906775701f3ad758bd2e46a315a011d5c1df06d1e7083ecb37ea3386ebdefeb8cf98a86750e2f8dc503dfe6cfebc5ad43502d5a1f7e235c22cc7dce074f6ebfaf385f47999e47dc3f85b8956888bbf956865d2330fbaf5c13e5e179ccfd879a6d871cf9cce8f43ecb8674e8f47ec462f76e338c656cd5573499a333c1339fcfd193eb3d46ea5ae4b892107efab4a0163750a186b52c0589b02c6ba14304e4a01e3e414304e4901e3d414306681f17c7eb633e85318ab3e5ce7abd4b506c66e61d2a29cffbf83f9ff522979ed83b119bed3855ab404a3d702bfe7713cfba1dcffeb8518f0ff2e989102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e392143036a780f18214305e9802c68b52c078710a182f4901e352654c8471252f6361ac8c9687e3fffc7b2affe718034f3eea9e53a6df9e94fdffad313f9fb46daccf8dc37b4b78ff4fb8a7f66c3b8e7b47ca7db65da9ff6f9589b1305646aefbd8f1773ca3e1c1df4546fdb68681b1305646aedfbfe06ff446c3d3059a754668c6c058182b23d7bd72e5decb89f7f4774568c6c058182b23de579d204fa85977193c6b40b3ee08cd18180b6365e4ba2f390b3146c3d3039aad89d08c81b1305646a6dfb6859af594c183bf01eb89d08c81b1305646cbb39649b3de3278d68266bd119a4962449ea49f93dd1b118be33783e5b69d1890714a0a18a7a68011ef93e018bf4add27d1cbab4f61acfa709daf52f749606c86dfc7845ae0ef21fe9216eb79794ade2781b137306981bf57f94b5a6c001e8edfcf6421c66878882107ef9b9102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e3921430e27755866bc592df5f364cf0d871df55267aecb8ef25133db6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae792e29761ae6f89571e231224f73723c796c3bc6ea13d0f6be089e0c53db31d626016d2786b4316e4c01e3da1430aa8ec57b10c7c268793633f16c2a836733f06c61e2d95c06cf16e0d99a3c4f98535bcae021861cbc6f6d0a1837a6805175541dadd92dffd436d55110631a745446655446653c1f8c6918c3953115f958182ba3e5d9963c4fa8d9d63278b68166f4be365ec6c258192dcff6e47942cdb695c1b31d34db16a119036361ac8c966747f23ca166dbcbe0d9019a6d8fd08c81b1305646cbb333799e50b31d65f0ec04cd764468c6c058182ba3e5d9953c4fa8d9ce32787681663b233463602c8c95d1f2ec4e9e27d46c57193cbb41b35d119a313016c6ca6879f624cf136ab6bb0c9e3da0d9ee08cd18180b6365b43c7b93e70935db5306cf5ed06c4f84660c8c85b1325a9e7dc9f3849aed2d83671f68b6374233a98c6b53c0b831058ccc3a16c6ca6879f633f1ec2b83673ff05ccac4b3bf0c9e4b81e7b2e479c29cbab40c1e62c8c1fbd6a68071630a185547d55112a3ea58393a2aa3322a63798c7d2960d473ad8c521919be5f95fc0dcda5133c768317bba14262c7fd8666a2c7d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf25c53e907cec42b9cf9839003c1ccfbc616a67de1ef77277ac3f25a89fd5ea0a4fab4b3dad7250e772d0ef0a06fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85732b53d6eacbf7282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3d7edf4fc537b8ca7bb728ddb4756f2539dcb26155f1b02ed431cb1b50fe9674525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826783309eddc2787608e359238c67b1309e4e613c7385f11484f1cc10c6b35518cf14613ccb85f1540be3d9248c272f8c67af309e25c2785608e399278c67a6309ea9c2786a84f16c16c6b35a18cf3e613c7b84f1f40ae3592a8ca74718cf36613c5dc278e60be36917c6334b18cf4a613c59613cadc2786a85f1ec14c6d3228c6799309efdc278d609e359208ca749184fbd309e9c309e3a613ceb85f1ec12c6b35d184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc278b608e399248c6791309e39c278a60be36914c6335918cf783c6fa81c9e8c009e6c70ee33c9b2f0f703e0abf2de6bc7abb6a6e1bf5fe5fc55f09eab5db93ae2d857818f7e1b7e75c47b51a7aba02d7dae9c7f6a5ba813c6ea837d8a570f1c570be139208c67b2309e46613cd385f1cc11c6b34818cf24613c5b84f13408e399268c6795309ed9c2783a84f12c14c6d32d8c67bb309e5dc278d60be3a913c69313c6532f8ca74918cf02613ceb84f1ec17c6b34c184f8b309e9dc2786a85f1b40ae3c90ae359298c6796309e76613cf385f17409e3d9268ca74718cf52613cbdc278f608e3d9278c67b5309ecdc2786a84f14c15c6335318cf3c613c2b84f12c11c6b357184f5e18cf26613cd5c278960be399228c67ab309e19c2780ac278e60ae3e914c6b35818cf1a613c3b84f1ec16c6b341184f55040fc3ff7f19f2d0fd6b746cda3f202436c37908ffdfcf6b98da74ad3b56ad3b2ef153bc1aa8739dbb30b0f7a3e07b89cbbfdf10ef9dbb1634ba96a92d743e32def9618e5dc0fb2a0360083c7d82081e8efb5199da39220f13fcff67f356abeb3cadfc7397833ad7807ed731e81795db7fee03ee358dcc96873e3b88350bf536086124df95bc3c61bfdd108cdc4af5dbeb8087630c636a67d8bfaef7dab4214277aa83b97a3d433ba3fa0eed5f0fe7216dcc9667932b136b16ea6d12c248be6b7979c2feb52918b995ea5fd7030fc7f8c3d4ceb07fdde0b5695384ee540773f506867646f51ddabf01ce43da982dcf665726d62cd4db2c84917cd7f1f27464a1cdb495ea5f37000fc7f8c3d4ceb07fdde8b5697384ee540773f546867646f51ddabf11ce83322b7314b3e5a1df98106b16ea6d11c248beeb59793af25968336da5c6b11b8187639c67d23d1cc76ef2dab4254277aa83b97a13433ba3fa0eeddf1411bb3948568b9b47a1c5cd113c378fb31614af5ce66b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea6c37d55975569d55e724985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39825e86c79e81931c49a857a5b853092ef065e9ef077415b83915bc6dbef83f2cdc07323833e4ced0cef213fe8b5696b84ee5407fbd741867646f51dda3f08e7e16019cc37a59059751e1bb3e5a167c5126b16ea6d13c248be1b7979c2716c5b30722b358e1d041e8e719ea99de138d6efb5695b84ee5407fb573f433ba3fa0eed533c6556e63866cb43ff870db166a1de76218ce4bb9995a710febe717b30722b358ef503cfc1c4798ae31883eee13876c86bd3f608dda90ee6ea21867646f51dda3f04e7a11ce69b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73e5e86c79e8ff0e21d62cd4db2184917c075979dac375871dc1c82de3edf741f910f0f427ce535c7760d03d5c7738ecb5694784ee5407fbd761867646f51dda3f0ce761a233df944266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b9667a72b136b16eaed14c248be7e5e9ef0b9073b83915ba9fb760e03cf21067d98da19deb773c46bd3ce08dda90ef6af230ced8cea3bb47f04ce83322b7314b3e5d9e5cac49a857abb843092ef102f4f388eed0a466ea5c6b123c0c331ce33b5331cc706bc36ed8ad09dea60ae0e30b433aaefd0fe009c076556e62866cbb3db9589350bf5760b6124df615e9e701cdb1d8cdc4a8d6303c0c331ce33b5331cc78e7a6dda1da13bd5c15c3dcad0cea8be43fb47e13c28b33247315b9e3dae4cac59a8b7470823f98ef0f214b2d066da4a8d63478187639c676a67388edde2b5694f84ee540773f516867646f51ddabf05ce43da982dcf5e5726d62cd4db2b84917c03bc3c61ffda1b8cdc4af5af5b808763fc616a67d8bf8e796dda1ba13bd5c15c3dc6d0cea8be43fbc7e03ca48dd9f2ec736562cd42bd7d4218c977949727ec5ffb82915ba9fe750c7838c61fa67686fdebb8d7a67d11ba531dccd5e30ced8cea3bb47f1cce43da982dcf7e5726d62cd4db2f84917cf879b19f8927e7f1e422b49888b11bbcd80d1512bbd18bdd5821b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d8959a6baa79656a9e398f9a67cea3e619d55ca4e67f4a2e76278e2b5510eb18533b71eb8332cecfd1b64618cf62613c9dc278e60ae32908e399218c678a309ee5c278aa85f1e485f12c11c6b34218cf3c613c3385f14c15c653238c67b5309e5e613c4b85f1f408e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8ca74518cf32613ceb84f12c10c6d3248ca75e184f4e18cf01613c75c278d60be3e916c6b350184f87309ed9c2785609e399268ca74118cf24613c8b84f1cc11c6335d184fa3309ec9c278320278b2c1b9bf47c1df1354838feeefdf0fbe67b8f201f05545c4a0e31c071fcd9fd231ec78b3aee95c862a78cfad115ccf888847716e8d78ef78e88eb1fa609fe2d503c7ad4278260be36914c6335d18cf1c613c8b84f14c12c6d3208c679a309e55c278660be3e910c6b350184fb7309ef5c278ea84f11c10c69313c6532f8ca74918cf02613ceb84f12c13c6d3228ca756184fab309eac309e95c2786609e36917c6335f184f97309e1e613c4b85f1f40ae3592d8ca74618cf54613c3385f1cc13c6b34218cf12613c79613cd5c278960be399228c6786309e82309eb9c2783a85f12c16c6b346184f5504cf01269eb8e7291c1010dbeee74117bb65e1efe3f13bc0031e23ed1f0346e4259e3c134fdc3328f20262dbf6d377095a83cbc2dff1775c5c3995f718693f2aa7f0beb4d54c3c71cfed582d20b6d582e62ee91e802cfc1d7fb7c09553ab3d46da8fcaa9465e9ef0ff966809466ea5ee35c23ec7710e99da99c7fe97e03334229f45dde26985cf501d8ffbe4e3c6038aa7ccca1cc76c7968ed8258f1f36c3c7ef7361ac6a8cf57069e707c6c0d466ea5c6c763c0c3f1f9c1d4ce701c3be1b5a9354277aa83b97a82a19d517d87f64f44c46e0e92d5e2e428b43819c173729cb5a078e5321f4821b3049d2dcf2a5726d62cd45b2584917c795e9e707c5c158cdc4a8d8f278187e3f383a99de19870ca6bd3aa08dda90ef6af530ced8cea3bb47f0ace4339cc2752c8ac3a8f8dd9f2d01c32b166a15e410823f98eb1f214f25968336da5c6b153c0c331ce33e91e8e63835e9b0a11ba531dec5f830ced8cea3bb43f08e7419995599995599995599995599995599995599995599995599995599995599965335b1efa6d23b166a15ebb1046f29d64e529ae3bb40723b752eb0e83c0c3b12ec3a47bb8ee70da6b537b84ee540773f534433ba3fa0eed9f86f3a0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2992d0f3d739b58b350af430823f94ef1f284bfdbea08466ea5d61d4e030fc7ba0c533bc37587dbbc367544e84e7530576f63686754dfa1fddbe03c28b33247315b1e7ab615b166a15ea71046f20db2f214d74f3b83915ba971ec36e0e118e799740fc7b1335e9b3a2374a73a98ab6718da19d57768ff0c9c8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9f2d0ffb946ac59a8d72584917ca75979dac37587ae60e4566adde10cf070accb30e91eae3b9cf5dad415a13bd5c1fe7596a19d517d87f6cfc27998e8cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f274bb32b166a15eb71046f2ddc6cb133ef7a03b18b995ba6fe72cf09c61d087a99de17d3b435e9bba2374a73ad8bf8618da19d577687f08ce83322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6add43836043c1ce33c533bc371ec76af4d6b2274a73a98abb733b433aaefd0feed701ed2c66c797a5c9958b350af470823f9f073b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701d15cef7528c001870eb83327e57e0b8f6646a673eeafbd87aaf4df87d0ce71cced7f70d6556e63866a6798b8eac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986dec3b928fdd91f562933e81c743db1dcc5a30b5331c0fee0ca235a67839a883797a27433b3310978e4dfb77c2792887f9440a9955e7b131dbd877251ebbf83c798c4dfa041e0f6d77316bc1d3cee278707710ad31c5cb411dccd3bb19da9981b8746cdabf1bce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9978ece2fc3dc6267d028f87b667326bc1d3cee2fcfd3d41b4c6142f0775f09cdfc3d0ce0cc4a563d3fe3d701e945999955999955999955999955999955999955999955999955999955999955936b38dfdace46387bfc7c1d8a44fe0f1d0f62c662d98da19cedfdf1b446b4cf1725007cff9bd0cedcc405c3a36eddf0be7419995398ad9c67e76e2b18beb79189bf4093c1eda9ecdac054f3b8be3c17d41b4c6142f0775f09cdfc7d0ce0cc4a563d3fe7d701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b47671bfbfec463b787f3f7189bf4093c1edaee67d682a79dc5f9fb0782688d295e0eea609e3ec0d0ce0cc4a563d33ec5ab04e6132964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f27f9d8e1efd93136e913783cb43d87590ba67686f7bf3c18446b4cf1725007f3f441867666202e1d9bf61f84f3a0ccca1cc56c633f947cec42d68b4dfa041e0f6d0f316bc1d4ce703c783888d698e2e5a00e9ef38719da9981b8746cda7f18ce43da98f1fc65928b1ddeb74931aadcabf53dd795abc1f73c57ae01dff35db9167c2f70e53af0bdd0952781ef45d036f2bdd8955782ef25aebc1e7c2f75e575e07b992bf782efe5aedc03be57b8f210f85ee9cab783ef55ae7c07f85eedca7782ef35ae7c17f85eebca7783ef75aefc4cf0bdde95ef01df1b5cf959e07ba32bdf0bbe37b9f2b3c1f76657be0f7c6f71e5fbc1f756577e007c6f73e5a5e07b24c2f776577e0ef8dee1ca0f82ef9dae7c007cef72e529e07bb72b4f05df5f41995edfe3caf5e07bd49573e07baf2b4f03dffb5cb9017cef77e5e9e0fb802b3782ef83ae3c037c1f72e599e0fbb02bcf02df475cb9097c1f75e5d9e0fb982bcf01dfc75d792ef83ee1caf3c0f749579e0fbe4fb9f202f07dda951782ef33aebc087c9f75e5c5e0fb9c2b2f01dfe75d19cfef5fbbf243e0a371e561f0d1b8f25cf0d1b8f23cf0d1b8f27cf0d1b8f202f0d1b8f242f0d1b8f222f051debd187c94772f011fe5dd4bc14779f732f051debd1c7c9477af001fe5dd2bc14779f72af051debd1a7c9477af011fe5dd6bc14779f73af051debd1e7c94776f001fe5dd1bc14779f726f051debd197c94776f011fe5dd5bc14779f736f051de3d023ecabbb7838ff2ee1de06b76e57782ef02577e17f82e74e57783ef2257c671e662577e0ff82e71e547c14763e17bc1f734577e1ff896b9f2fbc1b7dc953f00be15aefc41f0ad74e50f816f952b7f187c2daefc11f0b5baf247c1b7da953f06bebc2b7f1c7c6daefc09f0155cf993e06b77e54f81afc3953f0dbe4e57fe0cf8ba5cf9b3e0eb76e5cf816f8d2b7f1e7cf4394ee38cedcfb65f920ea491f5519b5b23da42bec9d096be20d96b3a8a45c7a6fd7660a47350187fc6c26819db3c46cbd3c9a019e6156da5be3375024f07030f533bc3ef4c5d5e9bdabd36e5a0ced3a09d5d0cedcc405c3a36ed77416c8e738e5ad4bae32ef3b4a8c13aee03cd7e9e96d2918e61f3b710d1961ee6b6d0b1695cea1987d8dd5eecbc171bc763da4af5af6e605ec3c06c8fdb9bfc71c3feb5d61d8b728ae2e4a14deb4083a4da84b133ce280ef96ba03cbf69b82ed5233de8f38bd86d2ed3b94476ff7d9ddefb7250a727a2fd7d41b2edeff5787a3d667b4e1a9a863918fa4398033d1e07ede741bbde18ed7a403baa839f7f2d4cdaadf17868bf0578e81aa70b7c74ad40fc789dd53a0edcfeb8d715c14dbe6e606c89602c24cf185eebb4788cb45f0046f2ad019e6e26cdfc73bdccd3073f97ebbc3af4de1aa8b31a3e1bb311756dbf5b9a196e177d07ff5390ec985ec7a017ce0f04a04fe06918805ed4ce5a069ea9c1f01cc1d9a1c133fdb70c5c3ed07f240368351e26be66229a51053e2c5747f88260e454084ec9d254084ec95679b2e0140cd5b75fa56cb368ba61e0e4f1a1a79f1a3875f8ccdda787068eec1dbc05a96b3d7a248d6b0192a28fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b431b533fcd09be2b5a9ce6b530eead4c2dfa630b4330371e9d8b43f252276820351a8c5d4516831358267ea386b8113dfe4c39e4a7fc7c5932aaf2dd8a3b14d7e9e27da200ab8148e9f7170f66fb6b3d7bac64c0a864f368d9ef68ad69e043b636a3fb5ec8ca89d01b543909de1b4339af643cdce58da194a3b23696720ed8ca39d61b4338a7606d1ce18da19c2e6a038036867fcec0c9f9dd1bb04d8be0cbcf65bb5fd84b433727606ceceb8d92b2b7b0560af46ecd5b7bd52b4b31ff60ac17eb3b4b30cf6d3d65ec9d84f69fbc96aaf14ed15a2bda2b757b876956a83b18d4eeb4dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d865417176fd72635718bbd2d8d38d5d65ec6a63d718bbd6d875c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b86b15b83e21d3a278d9d323668ecb4b1db8c9d31763628ae98d91532bb226657c0ec8a975de1b22b5a7605cbae58d9152abb226557a0ee0f8a2b4c76a5c8ae0cd95501bb0a6067fded2cfff383e22cbe9db57f51509c95b7b3f076d6ddceb2db59753b8b6e67cded2cb99d15b7b3e076d6dbce72db596d3b8b6d67aded2cb59d95b6b3d076d6d9ce323f12146791edacb19d25b6b3c27616d8cefada59de4783e22cae9db5b5b3b47656d6cec2da59573bcb6a6755ed2caa9d35b5b3a47656d4ce82da594f3bcb696735ed2ca69db5b4b3947656f20bc61e33f637c6fed6d8df19fb7b63ff60ec1f8d7dd1d8978cfd93b17f36f62f41312fffd5d8bf19fb8ab17f37f61fc6be6aec3f8d7dcdd8d78d7dc3d8378d3d6eec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec09634f1afb8db1df1afb9db1df1bfb4330bcba8183c81fdd0ecdb4f70f0d0d9c3c3dd43c34d87cf2f61343c74f9fb8bbf9cee343c79a07ef183873f4c4e09df8e6f7b8618b9611369d39d37f77f3f1534706ee6a1ebc7da879f068f3a1c1db4f1d398b6ffaa27bd3c27323f61f39121fec9b554f81f43b630cfa4bf73e5aa0d955ba6d4f8c45903f8ce54d33abc7d6a04bdda70e7d7bbfa278b5db7cf6c4e05073bef994f9b7ff8479cfc091d666fcdb5923f2d9a1e6b343fd67869a8f9e193cd9dcd68ac7bd76ca181a51d3348637b5368dbee5c1ff03d8e2fb122d0a0400", - "isInternal": false - } - ], - "packedBytecode": "0x000000028df71de500000047d21f8b08000000000000ffed9d779815c5b6f67b604064cf8898b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020a227e7e4497a3c9e74ef3de73cf78ffbddfb05bfdbb577ad3bef14d5c3ecb16bf3eed9d5cf53b3abd754f7fad5dbabab53755741909efe19a6029d6f19a6b3820327f97f52ff967eb3a94b8ceb2a75c95990239c2d7284b3658e7016e60867ab1ce16c9d239c87e508679b1ce13c3c464ec5d622a83fc5cddbd681ae713326724cd3a21cd0b438c7343d2207346d17e4461b75648e70b6cf11cea37284f3e81ce13c2647388fcd11cee37284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce12cc911ce0e39c279468e709e99239c67e508e7d939c2794e8c9c9d80b3a3fe3d57ff9ea77fcfd7bf52f602fd7ba1feedaceb58a8e72f525c61520f69ca8cff750d537998ba85a9bbf1bf1e61ea19a65e61eaadff57a2ff5711a6ca30f50953df30f5d31af40fd3c561ba244c9786e9b2305d1ea62bc2746598ae0ad3d561ba264cd786694098ae0bd3f561ba214c3786e9a630dd1ca65bc234304cb786e9b6300d0ad3ed611a6cb0dc11a62161ba334c43c37457988685697898aac234224cd5611a19a69a30dd1da651611a1da67bc2746f98c684696c98c685a9364ce3c334214c13c334294c93c334254cf785696a98ee0fd303617ad0d0eca1303d1ca647c2f4a8c1392d4c8f85e9f1303d11a627c3f454989e0ed333617a364cd3c334234c33c3342b4cb3c334274c73c3342f4cf3c3b4204ccf85e9f930bd10a617c3f452985e0ed32b617a354caf85e9f530bd11a637c3f49666911d616198de0ed3a2302d0ed392302d0dd33b617a374ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2f45e983687694b98b686e9fd306d0bd3f630ed08d30761da19a65d61fa304cbbc3b4274c7bc3f45198f685e9e330ed0fd32761fa344cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf73363995f87e93786edb761fa9d61fb7d983ed7f92ff4ef1ff4ef97faf78ffaf72bfdfb27fdfb67fdfb17fdfb57fdfb37fdfb2ffaf75ff5efbfe9dfbfebdf7fe8df7f8669538774be4d5037258398daa8f29ad4b31f11bf63507f525ab4d4ff93df126d2fd4f3f22bdab5d2f3ad0c7b6b3ddfda584f1b3ddfc6b0b7d7f3ed0dfbd17afe68c37eac9e3fd6b01fafe78f37ec67e9f9b3c09e08e0deb0b62b5b4b6d2a009bc46b0bb0b5d2b696606b2dab03db61dad60a6cb27d5b83ed706d3b0c6c6db5ad0dd812da76b86819a6226d4b0671c54ae970b5dee2b8d7ab9f971d113fef08b5de768e788f8c9f77a45a6f7b07bc2a3e8ed2eb3a12e2e6686d6b0fb663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056ca76bdba9602bd1b6d3c0a69bdce074b09da16d25603b53db3a80ed2c6d3b036c676bdb99603b47dbce029bb4bf67834dce17cfd136d5761c5e00cb68bbb45ba965a4cd06db79d25e83ed7c69abc1d649da69b05d00bec57621b43562ebac6dd26ea9fff5d6f96410d77e5256a3d65b11f77ac335abf5f6897fbda9678e7d833aad93e0a702b4eaa7f331f66bea82be0b74123f622f84fcd55056ca891e72ec1176758ca9d4f97e0d2cd7db58ae18ca545aea9f0ce2ad7f1f83a78fc1dc0af26e62b66b571fb38d9e328ed94150d68c3d390f6a8e313b00381cc46c0f1fb38d9e328ed91a286bc69e9c0b37c798bd03381cc46c959b982d2bf5319bbe6f1604f6d893eba1e618b3a38123fe98ede663b6f153c631fb049435634fae899b63cc4e058ef863b647953f3768f49471ccce87b266ecc9fd99e618b34f03878398adf1ed6ca3a78c63f62d286bc69edc2b6c8e31fb3c70c41fb3bd1cc56c571fb341fa196810d8634fee5b37c7985d041cf1c7ec087f7fb6f153c631bb1dca9ab127cf509a63ccaed379f59ce127fa39c32960fba9b69d0abcf1c776753747b15de6633bdd372408ec312acff39a636c7fa8f32a8e7f01fd11c4f64b6deb00b65f69db1960fb4cdbce847a39d807aafc3ed0e829e37de03750d68c6579b6dc1cf7811f01878398adf631dbe829e398fd1b9435634ffa3934c798fd3d703888d91a1fb38d9e328ed9ff84b266ec9dabf3cd3166a5afa93a5ff8429f2f9c0fb63f685b27b07da96d1780ed8fda7621d8bed2b6ce60fb93b65d04b63f6b5b29d8fea26d5dc0f6576d2b03dbdfb4ad2bd8fe45dbcac1f6afdad60d6cffa66dddc1f6776deb01b67f685b4fb0fd53db7a699b7ade257dafe4bcb50df0278378b7adf4bb9475cb7c972cf86e67f86e9745dfed0ddfed2dbecb1cf84e800f990a8cf924e4cbdcf29416030ffa2a8fdf575755f7ae41e3eb5e0e3cdd1cd43d013e1ac3d30d78bac7cf93eaffdb23fef5a6b6715743d304f8ea0af5eae9a05e05e04bd62df3e2af186cd8b6f6b430f68a9fb1ac007cc9ba65be17308a0ddb7a79e74af61f753cec5850c7eb605f4a9d13893ff96e997094835dca5cd5a18ead93662b82ffe371afbb61731497a9b8105fb26e99177f45509feed9672c6b2c633783d1551b5100be64ddde77dd76903c1ec71d5ceb58db34f15d9105dfbd0cdfe5866f6c3b656ae8d8d60b9863bfe6d4c7b6caf8d75b8ad727726d287ef0fc01afe1e2aa13fa966b43f123f642c85f57505756ca891ed20e0bbb8a65d996c86e2ed7d358ae18ca5458ea9f0ce2ad7fa5c1536930ab6d72091c0b1dec0fa918a8303864be1cb4ab8cd0ae02b49332e78276aedab3de068fcc77071e69c77a008fab6ba2289e6c5c8f1dcc379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6572f60b49dab38b89e69f05ca51b308aad37f07475a459d476ed4ae2db41aca4da23f121e7e6b2ff7607bb94e9a55fa8536de53dd056ba88118c47991a7bcd1bff762a4b5d8377cb8007b79d83ebaa2e8ee2b114efdf7c1dc41b6b66bbd4cdd02aea1e8fabb6bcabc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae3b09a3d9ffcdd57dfed4f70ff5ba64fdeab9ceff71da1facac14fbc7483f88f38d3a174299e2167565ff3ff407339f53611fc9ee6eb54b6d4bec8f998479f1877dad705b32f4772a89cd77d90857cfdbd437c0d47734cdbe9fdd2d9abae8ff8c9a16189a627ffc0b0c1e15a7952debd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd22a8df7ee071c655ff1d69abe5797985e1bb10ca9cdca26edb48df2a1963b8abb11cf6fb9175cb32e783bdd258773bbdac70b432d6df03969532a7419bbaa7459d660edacab24cfbaee373f3f88fc3e9e7f85d33e0e9023c2eda1947e71ba5b80fc4fd1cdfec9f663b8f9132d8b7cf41bfca06fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43ea79867cab4cd69ffa5e708b3abfae9fc3c933a74e469df1ddd17fb6a82bbb49e78b8203fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77fa39be8bb121e4397e5743d7728ba6aef6577cc68a9ae2fedacde0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b65de06adb9795ba6c37f0bb29c9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb0baeab40a7fe86068590ffbc455d59292765456b6157fb887c0306d9cde5ba19cb154399be96fa278378eb6f7e6bb59fc1acb6c9cf20cebe80e3bfab36a96f8446e7834652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3cf3bd9fd67f417b11773fadff8218c27e5a81b1fe4eb07ee16a1d441f5ba4ccff33d66f9e93cb32d80fec7ff613f89e4b99ce67724e7ea8aeaf6ce7e4b85c54dd15337e072d192333c604b2e079829469abb5966d5619c1ddcbb26c71c4b2a295f9adb0a2e040fddc7c672dbdcff733ea22718ddf20973247435ddc9cb7a4cf015d7d532e097552f9324b5da5cc09b0af9da4f309d84eb8df9e67f9bf4c0d9d03e218ee17c75fe7d4f6bd043893e0077d5f0aac31f9ee82bee51c50fc88bd10f2e7b6ac2b2be5440fd15ad8d53e22e751c86e2e57612c570c65fa5bea9f0ce2adffc506cfc506b3da26a7429c9d07fdd05db5d5fd2334ea041a4919bca768fb0ea8ed5e87abf737a2cea5f0fd25f3fc0a8f936ece9bece7b1e67d35db394227831fcf117a403b9bb09435ef17caf132ce7ec3f8ae440ff08bef4ab8fa76736fd02d09f3785e70287dbbf88eadf217356642ef2cf88e1a33211bbedb1bbedb67d1b7d7dc6bcea4b983310852ef9fe1374bd5d4d079298e4b20cbb500461763392482fadf1e3f18238eef20cbb5044617c7874cbf7dde031865b9426074f16e298ebfd11846fcc6301ee785d1c1b762bb34f55bb1784faf353032bdb389cfa60e034617e7c54d7d570fcfe7dbc0afab7189ba66c058068cb2dce1c0e8e2de385ecb348611af8b64b9b6c0e8e21956a6e33be1b7e7f1deb24bc6868eed8efba294657aefa5d22d4f83e71ae8dbc1b886292df03ee3c1b4e8e396a7c1731ff4ede0be5f4a0b1c67f0605ae0b34117e31e2682facfe10ec683cf2f65b9a38031e988b15f068c4960fc9f7bc5c0d8df11633203c6fec028f66380d1c1fdd71463ff0c18f13ea52c772c305ee288f1e20c182f014659ee386074712f35017e1bc3782930ca72c703e3658e182fcd80f1326094e54e00c6cb1d315e9601e3e5c028cb9d088c573862bc3c03c62b8051963b0918af74c47845068c5702a32c7732305ee588f1ca0c18af024659ee1460bcda11e35519305e0d8cb2dca9c0788d23c6ab3360bc061865b9d380f15a478cd764c0782d30ca72a703e300478cd766c038001865b91260bcce11e3800c18af034659ae03305eef88f1ba0c18af074659ee0c60bcc111e3f51930de008cb2dc99c078a323c61b3260bc111865b9b380f126478c3766c0781330ca726703e3cd8e186fca80f1666094e5ce01c65b1c31de9c01e32dc078b38571a023c65b32601c088cb2dc05c0786bfc8ca96be9811930de0a3cb7c5cf93d2ecd60c786e73cb93faaedead165fb7c7ef2bb52d06058daffbedc033387e9ed4b6b83d031e612886e550b33be2674c69363803c63b806748fc3c29cdeec880670868768745b33be3674c69362403c63b816768fc3c29cdeecc8067286876a745b3bbe2674c69363403c6bb806758fc3c29cdeeca80675850a7d95d16cd86c7cf98d26c58068cc381a72a7e9e9466c333e0a902cd865b341b113f634ab3aa0c1847004f75fc3c29cd4664c0530d9a8db06836327ec69466d519308e049e9af879529a8dcc80a706341b69d1eceef819539ad564c07837f08c8a9f27a5d9dd19f08c02cdeeb668363a7ec69466a332601c0d3cf7c4cf93d26c74063cf78066a32d9addeb88f19e0c18efb5f0c4fd9dec7b2cbec63aaafb98a0f175178662580efb498c73c4383603c671c028cb613f895a478ce33260ac0546592ee198b1a17e12b5e07b7cfcbe53ed526dd0787dc6bbe569b09f04fa9ee0488bf141e3b598e096a7c17e12e87ba2232d26048dd76222f04c72a045027c348647188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc47d8e18a764c0781f30ca72d84f62aa23c6fb32609c0a8cb21cf693b8df11e3d40c18ef0746590efb493ce088f1fe0c181f0046590efb493ce888f1810c181f0446590efb493ce488f1c10c181f0246590efb493cec88f1a10c181f0646590efb493ce288f1e10c181f0146590efb493cea88f1910c181f0546590efb494c73c4f868068cd3805196c37e128f39629c9601e363c028cb613f89c71d313e9601e3e3c028cbddeb98b1a1eb97c79bb9efa86b95e6ee3beabaa4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df4f38f09d001f321518f349c80b43312c77af676cd68cc853121f4f29d61d7d3d4950f7272d3c058eea8ebe9e22a8bb30e41ae31339c0786f0e307a1dd37d109bc2a8789e76c4f354063c4f03cf338e789ece80e719e079367e9e544c3d93018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193da3673c148cb9d0867bc69c88c7b2a6322a9ee9f1f3a4347b36039ee9a0992c779b5bc6b2a6322a9e19f1f3a4349b9e01cf0cd06cba4533078c654d65543c33e3e749693623039e99a0d90c8b660e18cb9acaa87866c5cf93d26c66063cb340b39916cd1c3096359551f1cc8e9f27a5d9ac0c78668366b32c9a39602c6b2aa3e299133f4f4ab3d919f0cc01cd665b3473c058d65446c533377e9e94667332e0990b9acdb168e680b1aca98c8a675efc3c29cde666c0330f349b6bd1cc016359531915cffcf879529acdcb80673e6836cfa2192be3bd39c0f8440e303ad6b1aca98c8a6781239ef919f02c009ee71cf12cc880e739e0793e7e9e544c3d97018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193d63668c4fe600a3dfd69e9195d1c1f55583efd03cd7cc7d47bd43d3dc7d47bd43d3dc7dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993ef17e2f75d96e937665e001e17dfbc7154cf52b5de17f5babe8e513fa5d54b8656cf195a1543991741bf971ce857007e65dd322ffe3265ee48c0ecc877d911e13a0e87fa8b8f270c3d94ff971dd53daaad7fb999fb8e6aeb9bbbefa8b6beb9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f18df95641dd79bb7cff54ade3159d2fd4f352fe49b04b994987a57fdb057e1f72e1dbef43fe58910fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671ce17e7180f9559e0090c9ea0019ef9643c53c8786691f18c22e31942c6733d19cf25643c0f93f19493f18c27e31941c6732b19cfd5643c1791f1f425e3994ac6d38b8c673619cf3d643ccf90f10c25e3b9918ce732329e47c978cac8782692f18c24e3b99d8ce75a329e2419cf03643c3dc878ce23e3194bc633878ce75c329e61643ccf92f1dc4cc67304194f3b329e2bc8789e22e3b9908ca7828ce731329e79643c93c978ee26e3b9838ca7948ce73a329ece643c1793f13c44c6d38d8c672e194f2d19cf74329e2a329e81643ce793f15c45c6d3928ca70f19cf02329efbc8787a93f18c26e3e944c6732719cf0d643c9792f13c42c6d3958c670219cf0c329e6a329e41643cd790f1f423e3b99f8ca72719cf18329e8e643c7791f1dc44c6938def9966c25344c6534cc6733919cfe3643cd3c878ba90f14c22e39949c65343c633988c6700194f7f329e07c978ba93f18c23e3194ec6730b19cfd3643c4792f1b427e3b9928ca7808027111c38864902feff02d85a18cbaacfbeceee50f7ff57b5bd052cf39aceb7b4acfb55b0c9b7645fb32c8b3abd0a7549ea7ce9379b523aa1af24cc8bbf22e0788d84e74a329ef6643c4792f13c4dc6730b19cf70329e71643cddc9781e24e3e94fc633808c6730194f0d19cf4c329e49643c5dc878a691f13c4ec67339194f31194f1119cf0b643c3791f1dc45c6d3918c670c194f4f329efbc978fa91f15c43c633888ca79a8c670619cf04329eae643c8f90f15c4ac6730319cf9d643c9dc8784693f1f426e3b98f8c6701194f1f329e96643c5791f19c4fc633908ca78a8c673a194f2d19cf5c329e6e643c0f91f15c4cc6d3998ce73a329e52329e3bc878ee26e3994cc6338f8ce731329e0a329e0bc9789e22e3b9828ca71d19cf11643c3793f13c4bc6338c8ce75c329e39643c63c978ce23e3e941c6f300194f928ce75a329edbc9784692f14c24e32923e379948ce732329e1bc9788692f13c43c6730f19cf6c329e5e643c53c978fa92f15c44c6733519cfad643c23c878c693f19493f13c4cc6730919cff5643c43c8784691f1cc22e39942c6339f8ca7d2c2f382231e79df5dd62df32f90f876b01d4ad57a5f7754a737f4ba5ae9f50abff82b8432d3daa67fd5f30f5c56b8ccef13e0bb396f80466f38aa8b6c8f0263fba0ef571cf936c7e793f9579ab9ef7686ef7679e2bbbde1bb7d9ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2ede0daa00cbf93265381319f843c5e2fb8f8be9ca37ad6bb4efc3a46fd94566f1a5a99d756c550e675d0ef4d07fad9ae3d655efc65cadc918019e3a22488372ede8abf4e65aadfe1e1a0eb5b86be58af858e348d3a862c6ce6bea38e21cddd77d431a4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fdb6cec778dd588a3ed4f345b91e781bfc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732ff1b9e6bfa7ddeeff371f9f6c7361fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe99e3dccc4b7ff17381cd557ffea858ccc6bb0487d277542c3677df51b1d8dc7dfb38f771cee47b8903df09f02153437dfc9600cf22073c8eea997ab6b1d4a8d30b469d8aa10c1ee3973aa86701f89575cbfc52e091a912785cc44163b639f2cc27e39942c6338b8c671419cf10329eebc9782e21e379988ca79c8c673c19cf08329e5bc978ae26e3b9888ca72f19cf54329e5e643cb3c978ee21e379868c672819cf8d643c9791f13c4ac65346c633918c672419cfed643cd792f124c9781e20e3e941c6731e19cf58329e39643cc3c8789e25e3b9998ce708329e76643c5790f13c45c67321194f0519cf63643cf3c8782693f1dc4dc67307194f2919cf42329eebc8783a93f15c4cc6f310194f37329eb9643cb5643cd3c978aac8780692f19c4fc67315194f4b329e3e643c0bc878ee23e3e94dc6339a8ca71319cf9d643c3790f15c4ac6f308194f57329e09643c33c878aac9780691f1bc49c6730d194f3f329efbc9787a92f18c21e3e948c6731719cf4d643c45643cc5643c9793f13c4ec6338d8ca70b19cf24329e99643c35643c83c9780690f1f427e379908ca73b19cf38329ee1643cb790f13c4dc67324194f7b329e2bc9780a087812c181effe27e0ff6f824dde517f016cefe8fc22b0b5b0f868a9f34bc156a8f3b28ec3c2f4728703d78d3ab97a2f1f7d25615efc1501c73b243c5792f1b427e339928ce769329e5bc8788693f18c23e3e94ec6f320194f7f329e01643c83c9786ac8786692f14c22e3e942c6338d8ce771329ecbc9788ac9788ac8786e22e3b98b8ca72319cf18329e9e643cf793f1f423e3b9868ce74d329e41643cd5643c33c8782690f17425e379848ce752329e1bc878ee24e3e944c6339a8ca73719cf7d643c0bc878fa90f1b424e3b98a8ce77c329e81643c55643cd3c9786ac978e692f17423e379888ce762329ece643cd791f12c24e32925e3b9838ce76e329ec9643cf3c8781e23e3a920e3b9908ce729329e2bc878da91f11c41c6733319cfb3643cc3c878e690f18c25e3398f8ca70719cf03643c49329e6bc9786e27e31949c633918ca78c8ce751329ecbc8786e24e3194ac6f30c19cf3d643cb3c9787a91f14c25e3e94bc6731119cfd5643cb792f18c20e3194fc6534ec6f33019cf25643cd793f10c21e31945c6338b8c670a19cf7c329ecaecf094a977dba5af75005c382521bf1478163ad0c7513d4bf1bb065fc7b85ea5d5bb86566f1a5a15439925a0dfbb0ef42b00bfb26e99177fb9c8ac781ed779db77201e276114db42b73ca9fdf6f1a0fed4d07efb2ef0b868d71cd533b57f2d33eaf4b845772983b1bacc413d6dfb8ecc2f83ed906bcc8ae7299d17d604947b8a84516c4bddf2a4f6afa782fa5343fbd732e071d1fe38aa676aff5a6ed4e9298bee52066375b9837adaf61d995f0edb21d79815cfd33a2fac0928f73409a3d8de75cb539e803acbd4d0feb51c785cb43f8eea99dabf5618757adaa2bb94c1585de1a09eb67d47e657c076f0cc9ed9c6ac78e4d98eb026a0dc33248c625be694a7bc34017596a9a1766c05f0b868e71de99e6ac7561a757ac6a2bb94c1585de9a09eb67d47e6575a7c9704f16ab1aa115aacb2f0accab216e22f53e62539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9ebac26afb3d7d9ebec758e83d9ebec758e62f63a7b9da3981974563cf2ed4a614d40b9674918c5b6dc2d4feabda06783fa5381319f84fc2ae059e1401f47f54cf5215f6dd4e9598bee5206f7afd50eea69db77647e356c874c9857e620b3d7b969cc8a67bace0b6b02ca4d276114db0ab73ca9766c7a507f6aa81d5b0d3c2eda7947f54cb5636b8c3a4db7e82e6570ff5ae3a09eb67d47e6d7c076f0cc9ed9c6ac7866e8bcb026a0dc0c1246b1ad72ca53967abf7146507f6aa81d5b033c2eda7947baa7dab1b5469d665874973218ab6b1dd4d3b6efc8fc5ad80e9930afcc4166afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9eb9c3f3a2b9e993a2fac0928379384516cab9df2744d3d779819d49f1a7aeeb01678d6c4ce937eeee040f7d4738775469d665a749732b87fad73504fdbbe23f3eb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a6796ce0b6b02cacd226114db1ab73ca9ef1ecc0aea4f0df5db59073c6b1de8e3a89ea97e3beb8d3acdb2e82e6570ff5aefa09eb67d47e6d7c376f0cc9ed9c6ac7866ebbcb026a0dc6c1246b1ad75cb936ac76607f5a786dab1f5c0e3a29d7754cf543bb6c1a8d36c8bee5206637583837adaf61d99df00dbc1337b661bb3e299a3f3c29a8072734818c5b6ce2d4faa1d9b13d49f1a6ac736008f8b76de513d53edd846a34e732cba4b198cd58d0eea69db77647e236c07cfec996dcc8a67aece0b6b02cacd256114db7ab73c6509a8b34c0db5631b81c7453befa89ea9766c9351a7b916dda50cc6ea2607f5b4ed3b32bf09b643ae312b9e793a2fac0928378f84516c1bdcf2a4f6af7941fda9a1fd6b13f0b8687f1cd533b57fbd67d4699e45772983b1fa9e837adaf61d997f0fb643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fdeb3de071d1fe38aa676affda6cd469be45772983b1bad9413d6dfb8ecc6f86ed906bcc8a6781ce0b6b02ca2d2061141b1e2f1638e22936788a2d5a1c2adf6abe42e78bf46f02fe5f018caedac30506a3cc638c23af6bcdda193ced0ccd0ea56f55ff4a9d3f42ffe2f6aa044686edd52e0b9ab53778da1b9a1d4adf4a8b3e3a7fa4fec5edd5071819b6577be071d03e97270c1e353574beb1d9b13e8eea993adfd812d875c7e39094c163f71607f5b49d4bc8fc16d80e9ed933db9815cf409d17d604941b48c22836bc4ed91a3f4f79c2e0515343edd856c7fa38aa67aa1d7b3fb0ebbe1574973218abef3ba86701f89575cbfcfbb01d32615e9983cc5ee7a6312b9e413a2fac0928378884516c5b80675bfc3ce50983474d0db563db1cebe3a89ea9766c7b60d77d1be82e6570ffdaeea09e05e057d62df3db613b64c2bc320799bdce4d63563c83755e5813506e3009a3d8de079e1db1f3a4c703421e3535d48eed70ac8f9b7aa6dbb10f02bbee3b40772983fbd7070eea59007e65dd32ff016c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6788ce0b6b02ca0d216114db76e0d9193b4ffab903f2a8a9a1e70e3b1debe3a69ee9e70ebb02bbee3b41772983b1bacb413d0bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886eabcb026a0dc501246b17d003c1fc6cf539e3078d4d4d073870f1debe3a89ea9e70ebb03bbee1f82ee52066375b7837a16805f59b7ccef86edb0db337b660bb3e219a6f3c29a8072c34818c5b60b78f6c4ce937e7e8a3c6a6aa81ddbe3581f37f54cb7637b03bbee7b40772983b1bad7413d0bc0afac5be6f7c276c88479650e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d87603cf47b1f3742d4d183c6a2a30e69390ffc8b13e6eea997eeeb02fb0ebfe11e82e6570ffdae7a09e05e057d62df3fb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8aa75ae7853501e5aa4918c5b617783e8e9fa73c61f0a8a9c0984f42fe63c7fa38aa67aadfcefec0aefbc7a0bb94c1fd6bbf837a16805f59b7ccef87ede0993db38d59f1d4e8bcb026a05c0d09a3d8f601cf27f1f394250c1e3535d48e7de2581f47f54cb5639f0676dd3f01dda50cc6eaa70eea59007e65dd32ff296c875c63563ca3745e5813506e1409a3d8f6038f83b84bf1141b3c32ff09816f355fabf345fa17b7572d30326cafe22c68d6cee069676876287dabfa8fd7f923f42f6eaff1c0c8b0bdda6541b3f6064f7b43b343e95b693141e78fd4bfb8bd260023c3f66a9f05cd0e657b7828f7ed4319a75ef343a779c121d4bce0106a5ee035a7d2dcc1f1a50c8f650130e09484fca7c0f3edf87952f7e53ecd80e7dbc0f3adf879ba38aa67a95aef77803daef52aadbe6b68f5a9a15531944186ef3ad0af00fccaba655efc7966cf1cc58ce7b6c29a80729f90308aed5bc0e3a2dd5075bf50af4bd6df2a4c9f1d53e7d7c5f312bc57dc4aaf5738c45f219499505257f6779aad08fe2fdb4dd5679f6173f40e7317db733b99177f4541d6eedd36782f19b570f1bc29d3e3fe3e0bcfd7f1f194e27e8ebef63aaa7b26cffef65a7862ac7b97a8e79e7be2af7baafde8acd725eb57fbe8bf1fe354f372dcf7a4fde86cd4b910ca0c28a92bfb1fd07ed8da0ad7fba69c939bfb668ba0ae3d13ae126d379f097daded52ee63288f6d4e85fec5fdb302eaeaaa5d8cbac784eda2d976bbd4de7c2e69fa2e065d3e26d5ccf69c0275acb470571270633c66733f9375db9e91551a3ab26986dbfa638b8e7d2cdc7d08b819f7eb3e868e6c9a1d6cbf1e68e11e48c0cdb85f0f347464d3ec60fbf5200bf720026ec6fd7a90a1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf8705f57564d3ec60fb759585bb8a809b71bfae327464d3ec60fb75b585bb9a809b71bfae367464d3ec60fb758d85bb86809b71bfae317464d3ec60fbf5280bf728026ec6fdbab1fdf659f7eb5a0b772d0137e37e5d6be8c8a6d9c1f6ebf116eef104dc8cfbf578434736cd0eb65f4fb0704f20e066dcaf27183ab26966dbaf1dbd4b98f1bb8dfb9dea931e637a7f063c1f018f8b98721407a58efab9a4faa6ee31b4da6f68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4918c586cfa45cdce75775bf48af4bd6df2a4c038eabf3bb3776bf65a50586bf247088bf422873d2e975656fd46c45c181db0dc7e2c66db93bf63aa4b7a519ff322ffe8aa03e7b80c7c1fbf9299ebd06cf5e8b16f8de693cbecb46b8d1b8ac547d1feff0a06e3bef36ea839a7e18bbfffa9a16189a7ee8d87722a8bf3d8501a724e491c7c5b36147f54cb505bb8c3a991a1743998e50cf5d0eea59007e65dd32bf0b78646a013cae62303078028b3e325592f14c21e31945c6731619cf10329e13c878ae27e3399c8ce712329e87c978cac978c693f18c20e3399d8ce756329ea3c978ae26e3b9888ca7908ca72f19cf54329e5e643cf790f19c43c633948ce702329e93c8786e24e34990f15c46c6f328194f1919cf44329e91643c1dc8786e27e339968ce75a329ed6643c49329e07c8787a90f19c47c633968ce75c329e61643ca790f1dc4cc67304194f3b329e2bc8781e23e3a920e3b9908c673219cfdd643c6792f1dc41c6534ac6733c19cf75643c9dc9782e26e36943c6f310194f37329e5a329e2a329ed3c8780692f19c4fc6731419cf55643c2dc978fa90f1dc47c6d39b8c6734194f27329eb3c978ee24e339918ce706329eb6643c9792f1ec21e379848ca72b19cf04329e6a329e7d643c25643c83c8788e21e3b9868ca715194f3f329efbc9787a92f18c21e3e948c6731719cfc9643c3791f11491f11493f15c4ec6338d8ca70b19cf24329e1a329e33c8780693f11c47c633808ce730329efe643c0f92f17427e31947c6339c8ce754329e5bc8788e24e3694fc67325194f01014f2238f05b4c09f8ff5eb0c937833e025b0bcbfae439b59457c7c5451d0e5c770bcbba3fb430a04e3ba12e499d2ffd66534a27f4958479f157041c1f92f05c49c6d39e8ce748329e5bc8784e25e3194ec6338e8ca73b19cf83643cfdc9780e23e31940c6731c19cf60329e33c8786ac8782691f17421e39946c67339194f31194f1119cf4d643c2793f1dc45c6d3918c670c194f4f329efbc978fa91f1b422e3b9868ce718329e41643c25643cfbc878aac9782690f17425e379848c670f19cfa5643c6dc9786e20e339918ce74e329eb3c9783a91f18c26e3e94dc6731f194f1f329e96643c5791f11c45c6733e19cf40329ed3c878aac8786ac978ba91f13c44c6d3868ce762329ece643cd791f11c4fc6534ac6730719cf99643c7793f14c26e3b9908ca7828ce731329e2bc878da91f11c41c6733319cf29643cc3c878ce25e3194bc6731e194f0f329e07c87892643cadc978ae25e339968ce776329e0e643c23c9782692f19491f13c4ac67319194f828ce746329e93c8782e20e3194ac6730e19cf3d643cbdc878a692f1f425e32924e3b9888ce76a329ea3c9786e25e3399d8c670419cf78329e72329e87c9782e21e3399c8ce77a329e13c8788690f19c45c6338a8c670a194f25194f0b8307ffafde0ddba3f3f2eda042f8ff44ddb9bc9d5e97949167c4ea5ec507864dd57787a3fa7e10d44d4998df01f515f60f80e703473c3b0d1ed37711e42b41b3ed864d316e73c4b8dd6094f96dc028fa6d079eed8e7876183ca6ef22c8f701cdde376c8a71ab23c6f70d4699df0a8ca2dffbc0f3be239e6d068fe9bb08f20341b32d864d316e76c4b8c56094f9cdc028fa6d019e2d8e78b61a3ca6ef22c80f02cdde336c8a719323c6f70c4699df048ca2df7bc0f39e239ecd068fe9bb08f28341b38d864d316e70c4b8d16094f90dc028fa6d049e8d8e7836193ca6ef22c80f01cdd61b36c5b8ce11e37a8351e6d701a3e8b71e78d63be2d960f098be8b203f14345b6bd814e31a478c6b0d46995f038ca2df5ae059eb88679dc163fa2e82fc30d06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4ab41b3e5864d312e73c4b8dc6094f965c028fa2d079ee58e7856183ca6ef22c8d78066ef1a36c5f88e23c6770d46997f071845bf7781e75d473ccb0c1ed37711e44781664b0d9b625ce28871a9c128f34b8051f45b0a3c4b1df1bc63f098be8b205f0b9a2d366c8a719123c6c506a3cc2f0246d16f31f02c76c4b3c4e0317d17417e3c68f6b661538c0b1d31be6d30cafc426014fdde069eb71df12c32784cdf45909f009abd65d814e39b8e18df321865fe4d6014fdde029eb71cf12c34784cdf4590bf196cc2db1b6c6fe87c2fb0bdaef33dc1f69acef700dbab3adf1d6cafe87c37b0bdacf3e5607b49e7bb82ed459d2f03db0b3adf056ccfeb7c5fb03da7f3fdc0b640e793609baff3fdc1364fe72f06db5c9dbf046c7374fe52b0cdd6f9cbc0364be72f07db4c9dbf026c3374fe4ab04dd7f9abc0f6acce5f0db66774fe1ab03dadf3d782ed299d1f00b62775fe3ab03da1f3d783ed719dbf016cf7eafc8d60bb4de76f02db7e9dbf056c9fe8fcad60fb54e76f07dbb774fe0eb07d5be7ef04db7774fe2eb07d57e78783ed7b3a3f026cdfd7f99160fb81cedf0db61feafc68b0fd48e7ef01db8f757e0cd87ea2f363c1f6539d1f07b69fe9fc44b0fd5ce72781ed173a3f196cbfd4f92960fb95cedf07b6cf747e2ad87eadf3f783ed373aff00d87eabf30f82ed773aff10d87eaff30f83ed739d7f046c5fe8fca360fb83ce4f03db973aff18d8fea8f3d2aea976f64f3a5f12c4dbce7e15d44d25e05bfca9327fd6f9d6461959b610ca9ca33b14aa671cea5ba6d20e4bbbac6cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8a41d7e116cd20ebf003669879f079bb4c3cf812da9f30bc026edf07cb0493b3c0f6cd20ecf059bb4c373c026edf06cb0493b3c0b6cd20ecf049bb4c333c026edf074b0493bfc2cd8a41d7e066cd20e3f0d3669879f029bb4c34f824ddae127c026edf0e3609376f85eb0493b7c1bd8647ff90a6cd236ef079bb4cd9f804ddae64fc1266df3b7c0266df3b7c1266df377c0266df377c1266df3f7c0266df3f7c1266df30fc0266df30fc1266df38fc0266df38fc13656e77f0236699b7f0a36699b7f0636699b7f0e36699b7f0136699b7f0936699b7f0536699b3f039bb4cdbf069bb4cdbf019bb4cdbf059bb4cdbf039bb4cdbf079bb4cd9f834ddae62fc0266df31fc0f698ce4b5bdd066cf2ac584da5df70c271785a802f614906f1b6fd3825218f7597a9928c673619cf28329e57c878ce22e31942c6730219cfe1643c6f91f18c27e35940c6b3948c670919cf9b643ca793f1ac27e35947c6733419cf07643c3bc8782e22e32924e39949c6f31219cf39643c43c9782e20e339898c2741c6338f8c673119cf22329ed7c9783a90f1ac25e35943c6732c19cf76329e6d643cadc978be22e3994ec6731e19cf0b643ce792f10c23e339858ce708329e76643c15643c1792f1cc21e3799b8c672119cfab643c6792f1ac26e35945c6534ac6733c19cffb643c5bc9783a93f1b421e379868ca7968ce739329e2a329ed3c8780692f19c4fc67314194f4b329e3e643cb791f1cc22e379998ca71319cfd9643c2bc9785690f17c49c6732219cf16329ecd643c6dc978f690f14c20e3994fc6534dc6f30619cf3e329e12329e41643cc790f1b422e3d94fc633838ce745329ee5643ccbc8784e26e3798f8c6713194f11194f3119cf5c329e1a329ed7c878ce20e3194cc6731c19cf61643ccf92f13c4fc6f32e19cf3b643ca792f16c24e3d940c67324194f7b329e5d643c3bc9780a087812c011804dfedf126cf21d9e7d60fb42e7f7804dbee1f316d83ed7f9c7c0f688c5d6c2c2270cd3c026efca7e0136b93ff328d8e49d89cfc126e70de25fcdafe870207f0b5846fcb4b4f0a3bfcf2d5c92c7ed2dcb248378b737fa4a06f66fde15188c879a672719cf2e329ef6643c4792f16c20e3d948c6732a19cf3b643cef92f13c4fc6f32c19cf61643cc791f10c26e339838ce735329e1a329eb9643cc5643c45643c9bc878de23e339998c671919cf72329e17c9786690f1ec27e36945c6730c19cf20329e12329e7d643c6f90f15493f1cc27e39940c6b3878ca72d19cf66329e2d643c2792f17c49c6b3828c672519cfd9643c9dc8785e26e39945c6731b194f1f329e96643c4791f19c4fc633908ce734329e2a329ee7c8786ac9789e21e36943c6d3998c672b19cffb643cc793f19492f1ac22e3594dc6732619cfab643c0bc978de26e39943c67321194f05194f3b329e23c8784e21e31946c6732e19cf0b643ce791f14c27e3f98a8ca73519cf36329eed643cc792f1ac21e3594bc6d3818ce775329e45643c8bc978e691f124c8784e22e3b9808c672819cf39643c2f91f1cc24e32924e3b9888c670719cf07643c4793f1ac23e3594fc6733a19cf9b643c4bc8789692f12c20e3194fc6f31619cfe1643c2790f10c21e3398b8ce715329e51643cb3c9782ac9785a5878f639e2916fc5c8ba657e5f33f7bdc3f0bd234f7c6f337c6fcb13df5b0ddf5bf3c4f766c3f7e63cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f73b86ef77f2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b61d2577997fe4dc0ff2b80f12d478cfb0c46997f0b18c586dfa3ae70c41375ed5e41e05b6921f7b2e4996702fe5f098cae62aac26094795b4ced009e4a473c51f71c2a097c2b2de45d6ce9539980ffe3f8cbae62aad26094795b4c6d039e3e8e78a2ee95f421f0adb490779fe59dbf04fc1fc75b7715537d0c4699b7c5d456e019e88827ea1ecf4002df4a0bf956987c932601ffc7f1195dc5d4408351e66d3185e3e70e72c413756f6a10816fa5857c6b57be799980ffe3f84dae626a90c128f3b698c2f1e3063be289baa73698c0b7d2429e05cb37da13f0ff21c0e82aa6061b8c326f8b291cef6688239ea87b8143087c2b2d86eabcf4b14ac0ff8702a3ab981a6230cabc2da6d601cf50473c51f7308712f8565a0cd37979872301ff1f068cae626aa8c128f3b6985a033cc31cf144dd7b1d46e05b6951a5f3abf56f02fe5f058cae626a98c128f3b6985a053c558e78a2ee195711f8565a54ebbc7c732e01ffc7f1df873962ac3218657e18308a6d05f0543be289bad75d4de05b6921dff65fae7f13f07f1c8fd5554c551b8c326f8b291c0fbac6114fd43dfa1a02df4a8b513a2f63c224e0ffa380d1554cd5188c326f8b291cbf7294239ea8670ba3087c2b2de4db5c4bf56f02fe5f0b8cae626a94c128f3b6985a023cb58e7816193c8b2c5a1c2adf4a0be9cbbd58ff26e0ffe381d1554cd51a8c326f8ba945c033de114fd4b39cf104be9516f26dedb7f56f02fe3f01185dc5d4788351e66d31b510782638e2897a0635210bbea39ea764c377d4b3816cf88ebacf9d0ddf51f76cb3e13beafe63367c47dd4bcb86efa8fb42d9f01d758f231bbea3aed7b3e13beada331bbea3aea3b2e13bea9a201bbea3ce6fb3e13bea5c2d1bbea3ce3b7c7beedbf3b87d1fca73877c6dcf0fe531f4501e4bfcb581bf36c8966f7f2cf1d706d9f29dafd706be3dcf7e7b2ed75f0541f4f5d83b8e7c2f317ccb3c3e6759e2c8f722c3b7cce33383458e7c2f347ccb3cdeff5ee8c877b1e15be61766c1773bc377bb2cfa6e6ff86e6ff1ed607b972582fad7dfc2805312f218036f3bd0c2513d4bd57a17eb757d1de37a6df76dccfda518ca2c06fd5cb71db26eb3edc845668c8b82f87c9726c0877c974cd9e4f9f11b609376ff75b049bf80d7c026c7a657c126cfa45e019b3cb37a196ca3747e3fd8e4d931f6d997e7ff5bc156a5f3d8577c98ce6f069bf4a5c23ecad21f6e13d8a44f23f68d957ea91bc0267d8bb14fa6f40f5f0736e9e38f7d01e53d8d356093776db00f9abc2fb50a6c7b741efb3ec9776856806d9ace2f07db1f747e19d81ed6f9dbc0f67b9dff0a6cbfd3f985607b48e7df06db6f757e31d81ed4f997c0f61b9d7f116c0fe8fc0b60bb5fe7f15db65febfc4eb07da6f3f80ed5549ddf01b65fe93cbebb739fce6f03db2f75fe79b04dd1f9e7c03659e71780ed173a3f1f6c3fd7f979609ba4f373c1f6339d9f03b6893a3f1b6c3fd5f959601ba7f333c1f6139d9f01b6b13a3f1d6c6374fe59b0fd58e79f01db8f74fe4bb0dda3f38bc0d642e797804dc68cc47e2a853aff0ed85ae93cf63f92effb4f00db613a3f1e6c6d74be166cf26db8516093f1a06bc096d0f96ab015e97c15d8e4fc6c18d864fc93a1609373a921603b52e707834dce7b06814dc6b31c0836f906691fb01da3f39560936feb5780ed389ddf07361973ec2db0c977ebf6804dc6627e146cf2bdea69603b59e7ff00361987e561b09daaf3bf07db693aff3bb0c9373c1f025b89ceff166c1d74fe41b09da1f3bf019b8c91f500d8ced2f9fbc1266307ff1a6cf2bde7cfc0d651e7a782ed5c9dff15d8642c91fbc026e383fe126c9d747e0ad8e43bdc93c176a1ceff026c32dedfcfc126df189e043619d7ed6760eba2f313c156a6f33f055b579d1f07b6729dff09d8bae9fc58b075d7f93160eba1f33f065b4f9dff11d87ae9bcb4336a7f56fbf95e3d9f0ce23b2f53fe3e0aea4f0d5d1b0803f2c479ae5d0c3ce86b77ec752f4b9dd7cb7edf42af57626837f8de15bbeff435c5877a5d857abdbb0cdf8550e65cdd38a8e5e498df522fb7c7580eef63c9ba65998bc0bed358773b5ddf0f1dd57797c124dca88394b94033a963e30f74be0d2c13235beafa58622d000d714a425e18dc6855568ae7bd8de1f9107876c7ce93be5e771113b86fc57dbd6edec73563ad18caec02fd763ad00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8a67afcee3736529b79784516cbb81c7c57d7e7c0e2beb57cf75769e5ee77777ec7eeb3fdf6ba5d75b6ad4b910ca7c0dcf9cf6e87c11fc5fb65bd4b674f09cb0c16d29fe8aa03ef82c68af239edd06cf6e8b16922f89cd77d908371a9795aabe2cea19fb1e43d7bd164d5dedafbbf5ba0a0c4d717ffdc8e0c167a345c0fbb1fe4dc07a3e863a38d8c71b8c0bf187fbd26eb049fe236074b19df15822ed813c0fc767d352e657c673f1f8b77d59a9cb76e303a853323830be0ba1ccefa0edfb5ce7b16fc85ed0ed1f96ffcbd4d0736ad14fd5797bfc754e6ddf6dc099043fe8fb7d608dc977bd77680a74123f622f84fcdfa13f8794133d446b61c7f1ca91dd5cee2363b96228b3c352ff64106ffdb71b3cdb0d66b54dbe8438fb071cff5db5493b2234ba08349232bb41a33d8e78761b3cc221fe5419d9fead8d32b26c2194f95fd046a9ba483b2ff5c4be2d780c70751c135fb26e99b79d1b7f088c661d557c0c38ae8e7777ecbcb9d5ffebb092f42fb6eb71f5ff9275b7d3cb0a4760acbf14d62f5cad83e863cbff6cdf92baf5bbec5fb6c7a8b3b0a0ce52a65d49fa57c5d9e53a9fc9b9fea1ba6e8b3ad7dfe1802711d4bff6565343c7773cc67ce080c7513d4b6dc7ae9d469d8aa14c47a8a783f39806df05de0ebe5d6c73d442cea176195a1442990e25e95f693ba274c46bd50fb3529732ebf960a9a52e52a663495d5dda803d4e2697dbed7da8935aef6e4b5da5cc052575ba74d6f9046c27bc6fd2c7f27f991a6a0f702c9e2df1d739b57d37036712fca0eff7803526dff5be0522e7fbe247ec8590af2ca92b2be5440fd15ad8d53e22effc21bbb9dc2e63b96228b3d552ff64106ffdb7183c5b0c66b54dba94d4e5258e5cb69b5b23342a058da40cde3f96633bbe77673beeef76c41d75dcdf0d8c66bb89e72e2ed9f6186ce63d54dbf9a094c1733229734d49fa57b5b3094b59f3deb08bfb98f80e6a00f5088cbaca8431e0e0dab01caf9da49d123f9dc1be5be745e7ce86768550666049fad7e179b7f5dea5797d87d714c26dee5bf8eec7e0923a6e1c3b71b7fe2d02db27fad7d1755ab9ed9ea170d8ee190e2ba963c765856bbfa52ee635728be0c07bea5f1b65f1be5b43cb9979731c4aa5ef2746399b1fbce689ed5d8d2ea5a5c8d422b0df2ff8c8602f080e1c7353f6038c39f33e4a67633d781fa5b624fd2b6d9259566dfb7f3fa64e1fd98ea21db62718931f016352e74bbfd9d4c5567f99177f8af163a30e6edaaef4fb4a99dc07de033c2eda76476d74291e63dbc4b6de5e55b6e3ff478656597c5e6b3de69bcfdcdb18f9787c9755dbee3fd9b4d865e171f51c254a8b5d16dff169d17d84edf861d362a785676796b5d869f11da3163578dfb3212d3eb0f0b8b817d590161f587cc7a7458fd2869e6ba0163b2c3caeee3d446921fe3265de49c0dcc6c8c7e3bbbcca769fcca6c5760b8fabebe6282db65b7cc7a74597ee788fae212db65978e2bf3fd7b016db2cbee3d3a2672fbc87d79016ef5b785c3dd38dd2e27d8bef18e362a4ed5e8e4d8bad169ead59d662abc5778ce787dd6df7da6c5a6cb1f038b8efdaa0165b2cbe63d46238de776d488bcd169ecd59d662b3c5777c5a5475b3dd13b669f19e85c7d53de1282ddeb3f88e4f8be13d95ef4d8dd0629385675396b5d864f11de335542a2e3636428b8d169e8d59d662a3c5777c5a54a7ceb53634428b0d169e0d59d66283c5777c5a94a68ea9eb1ba1c57a0bcffa2c6bb1dee23bc6b8485d4fae6b8416eb2c3cebb2acc53a8bef188f23a9b858db082dd65a78d666598bb516dff1695193baffb4a6115aacb1f0acc9b2166b2cbe63bce7928a8bd58dd062b585677596b5586df11d9f165d53c7d4558dd0629585675596b55865f11d9f162353cfc45636428b95169e9559d662a5c5778ce79da9f6624523b45861e15991652d56587cc778de99ba7fb1bc115a2cb7f02ccfb216cb2dbe636c3b53e79dcb1aa1c5320bcfb22c6bb1cce23bc6f3ce9416ef36428b772d3cef66598b772dbe633cef4c1d47de698416ef58785c8d8112a5c53b16df31c645aaed5cda082d965a789666598ba516df31ded74ab59d4b1aa1c5120b8fabf11aa2b45862f11de3f548ea1edfe24668b1d8c2b338cb5a2cb6f88ef15951ea1c7c5123b45864e15994652d1681ef3db1fb4ef7e7161fd217eb42438b4228735a87f4aff4c58ad251d681fdcab02e6fc75e9774bfb2851175791bea2265ce82bab4099c8c5154eea8aea998790beaa4d6fbb1a5ae52e6bc0e75ba74d2f9046c93fda05b6fcbff652a30e6939017fd549ddf88bfcea9587d1d3893e0077dbf06ac31f9ee82be0b74123f622f847caf0e7565a59ce8215a0bbbda47ded4796437975b642c570c65deb4d43f19c45bff370c9e370ce6d47b0f106712476edaae34d39b111a5d081a4919ecb3f7b1231eb30fa170883f5546b67f6ba30cf6a1943217431b85fd4aa59e89e0c07e938edab22ec82eeb9679f1570cb63dc068d651c5c767d0f753c68a907124944dc685e80aebe961d8545d7b3aaaabf89275cb7c4f6094712a7a649fb1acb18cdd0d46c5d3db816638f6864c0d1d2f7a034f2f073c8eea993a0e551875ea69d4a918cae0bb8d150eea59007e65dd325f01be5d6c73d4428ec9e7195a14429961c6f963948eb20e15bf3d2c75e9ebb82eb26e6997fa66c177a5e1bb9be13b11d4dfce41d0f0fe5509cc7d1c30abf5f68b7fbda578de2631257eba419dfa830671d509d725e779fd0d6d0b213f05cef3a49c9495e397b0ab58966d89ece672bd8de58aa14c5f4bfd9341bcf5ef67f0f43398d536b907ceed1cec0fa918e86b70c87c37d0ae5f84767d413b2983c7bfee8eb4eb63f0c87c77e091739c0ab0c9b982f027e0ff5db3c06db67b15166eb1e13871dd2d8cdde2674c9deb74371865be1b308aad0ff0543ad2ccdcd6e719fae071b9b55146962d843233e1d898b09455fb5dc782ba7ab5d4f6d8de1dd36d7a6b077ae1388d01e813181a06a097d4b395039eb641dd588d9326d74e1c7ef7c89b46a61f3d0a5aa18189bf05966ab4001be65b5a6c41507f48ca42b0c99094adc0d6c2900587c294f232a49d0bb9500f5977a1c1d90658e2f48dc379cad450e81c063c2e4259858e0ce9a943e7b689a3278fc4f8686570362576d4ff5a36502e6a5daeb683b94f2461de8cc14247fe5b427d93302ffed4b629d6f9f1c347dcdb7fe2dd53c68e1c3779120a65eed8982f08ea6f00f3374a70573b1d060056181b875646bdb0c190ffc986691b3f67398e996b6a13803f99da826e873bd04dad5fc6be1d317ccc981ba6548d193de2f229e3464c1e5d3b0eb7661b43b9a82d2dff6f0d365b138f65d584cd162e7b98c5669b7094e136609323d7e160139eb6606b0979296f6e1927e1da11d62fbb94fa9f12a795aef861415d08c8e158b5ab6aff559f8f55a7416aa86335b4b1da9c6ae86275c7500d4dacbe62a7861e56430daba1854f0ad24307aba1824f0dd24301abaf5d9404e9a17dcf08d243f79e15a487e63d07f8be0dcce706e9d32e35b46ea7203d74aeba75a95e5d579f7953efd6abd377755b409df2aa4b3c75faa94e3bd5e585ba7da16e65a9533a75baac4e05d5e99bba1ce9a7b5ee1fa68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc3744d98ae0dd380305d17a6ebc37443986e0cd34d61ba394cb704e9e19d6f0dd2c3afabe19f6f0fd24343df11a4878dbe33480f297d57901e6e7a78901e8a7a44901ea67a64901ec2faee203dbcf5e8203d4ceebd417aa8ddb1417ab85e351cb61a265b0d9fad86f9554302ab2185d550c36a58623584b11a02590d8dfc60901e72590dd9fc48901ef6795a981e0bd3e3617a224c4f86e9a9303d1da4870757c3864f0fd2c38cabe1c76705e9e1cae704e9e1cdd5b0e76a3874354cba1a3e5d0dabae867957c3bfab61e15f0ed32b617a35483f92508f62d4230a75fb5f3d0653b7a8df0ed2b7ce1707e947dcea91bfea02a1ba84a82e32cb8374172ad5a54c75b1535d0e55174cd5255575d1555d9655176ed5a55d75f157af3ca85740d42b31ea1521f5ca947a854cbd52a75e3154af89aad72ed56bc4eab5eadd41fab6f8de20fda854dd0e578f06d42d7375fbfed3307d2b48c7e477c2f4dd307d2f4cdf0fd30fc2f4c3203dacb11aee580d97ac865656c330ab219bd550ce6a2868356cf467417ae8693574f56f83f490d8bf0fd3e761fa22480faffd6598fe18a6afc2f4a730fd394c7f09d35fc3f4b730fd4b98fe354cff16a6bf87e91f61fa675037cc36362427e9d6475fc104c3274f1e3976fce492c9b52563a78c993c7afc98074aa68e9e3caaa4f6be91136bc6d44ec585bfad179631c2fb4f9c38fc8192d1e3aa47de5f523b6572496d4d4955ed9471d5f50ee27fd10b9d72a0c7e1d5d5d1cefef39b90fedf263a3d5cb78b32fafa550dd7ada865130439aa290b756fd9b40a4dd44730b9d4bd397d1e5c32694cede492d29271e1dff0c05b3b756475e712fcdfa450e449934b264d1e3e717249cdc4dab1255d3ae37a1f6ddb844afc575b3730679fd434713aeaef2c3529c47e797a1314f88fd39b46dabae41b90b62d699ad3929226d4f09ca62c747513096f29899465d294aac913878f981cbdf0eddf64e1bb9a52cd714dace6a91d9ae0eccca62cd4bf43d308ef6a8ab31919380bfe1bc78b38aa8c5506009b2d6c6f00000028471f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433015c2c12012630674a9464e5409004455a24419150b22c4bb224e79cb3e5749673ce675db4efce77bef339c83947c9e9feb9e77b77eff95df76c97f1a139b3c64253600db6e6bde2f6147aa77efd4d75ef6cf7ec301314b73f18cbb872b5b18b827337fa7b9f7bcd3fb5ad2dc163e539393329e1ac4a0967754a386b52c2599b12ceba94704e4a09e7e494704e4990d3b2550523b7a479a732e89a346336659ad6a740d35cca349d96024d1b82748c51d353c2d99812ce1929e19c9912ce5929e16c4a09e7ec9470ce4909e7dc9470ce4b09e7fc94702e4809e7c294702e4a09e7e294702e490967734a382f4809e78529e1bc28259c17a784f39204395702e752f7fa34f7baccbd2e77af2bdc2bbd67957b6d716dac71fbadc6565b36636ddedf0ac6da8d7518ebf4fed665acdbd81a633dee6fcdee6fbdc6d61a5b676cbdb10dc6363a1d3619db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec526397193b60ec72635718bbd2d8d38d5d65ec6a63d718bbd663b9ced8f5c66e3076a3b19b8cdd6ceca0b17e63878c1d3676c4d880b1a3c66e3176ccd87163cf3076abb113c64e1a3b656cd0d86963b7193b63ecacb12163b71bbbc3d89dc6ee3276b7a7d9338ddd63ec59c6eef5389f6dec3e63f71b7bc0d8738c3d68ec21630f1b7baeb1e7197bbeb117187ba1b117197bb1b197187ba9b197197bb9b157187ba5b157197bb5b1d7187badb1d7197bbdb137187ba3b137197bb3b1b73816ea086f35f636638f187bbbb177187ba7b177197bb7b1bf32f61e638f1a7bafb1f7197bbfb10f18fba0b10f19fbb0b18f18fba8b18f19fbb8b14f18fba4b14f19fbb4b1cf18fbacb1cf19fbbcb1bf36f605638f19fb1b637f6becef8cfdbdb17f30f68fc6be68ec4bc6fec9d83f1bfb17635f36f6afc6fecdd8573ccdffddd87f18fbaab1ff74beafb9d7afbbba342ff60d63df74e5c7ddebb7dcebb7ddeb77bcf77cd7d8f73cdff78dfdc0f3fdd0d88f5cf9c7eef527eef5a7eef567eef5e7eef517eef597eef557eef5d7eef509f7faa47bfd8d7bfdad7bfd9d7bfdbd7bb56baa973515cb9383e1ad2f48688cea389ab76b2a24fed260e466b5a8767fa3d766e7af71fbf44adad5bafd5acf5fe7f6ebbce34c76fb933d7fa3db6ff4fc33ddfe4ccfdfe4f69b3cff1cb73fc7f35fecf62f067f36803957e7b7be6ae7ca808ff2b50a7cb5ce570dbe3a3a1cf826395f2df8e8fcd6816f8af34d02df54e79b0cbeacf34d212d8dd53b5f5f9054aee4fbed7173491fd7ad434d4b9ef7b03d6e0313eff4e47907ec711b19786d7ecc70c79a0e7933d3f91ac137cbf96680cf0d417fee73d637dbf966816f8ef335816faef3cd06df3ce79b03bef9ce37177c0b9c6f1ef8163adf7cf02d72be05e05bec7c0bc1b7c4f91681afd9f91683ef02e75b02be0b9daf197c748fcb05e0bbd8f92e04df25ce7711f868acbd187c746d7889f3d971627206dee3fc344685efa1f1197ccb686c06df721a97c1b782c664f0ad84d8e45b05e30af95a9c8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282f706b561ec8c338a43fe1a28ef82ba548ff4a0cf1962b79f27eb5c796389f7f57aefcb419d7511edef0b926dff7a8f67bdc75c0bede7c9d9f682e6eca8b7b273f66aa8ebe71e5df34cc49cdd0b1c0c39dba5393beaadec9c1d80ba7eeed175ef44ccd9eb80832167fb7972b690d79c2dce91054174eed1779f8998b3c78023f99cedd49c1dfd5676ce3e0075fddca3efbf133167ef008ee473b6bb5faf0d46bd959db32f83ba7eeed15ccc44ccd9878083216707749c1df55676cebe05eafab947f3821331675f091cc9e76c0f53ceb66bce06c5f5ce2088ce3d9aa39e8839fb0870249fb387757e76f45bd939fb59a8ebe71ead974cc49cfd902bdb7586afb9758685e0fbbaf32d02dee473fb4807536e1734b78bf7810441748ed2dadd44ccedc75cd9e6f1e370ef01f9bee57c1780efdbce7721f8bee37c1741bb18fa40bff681516f65f781ef415d3f97691d7922f681af020743ce1ed69c1df55676ce3e0175fddca37b1a2662cefe1038187276407376d45bd939fb47a8ebe7de32579e88394bf795daeb851fbbeb8515e0fb89f3ad04df4f9d6f15f87ee67c2de0fbb9f3b582ef17ceb71a7cbf74be3cf87ee57c6de0fbb5f315c0f784f3b583ef49e7eb00df6f9caf137cbf75be2ef0fdcef9bac1f77be75b03be3f385f8ff3d9f52ebaf7eacbce67cf2d69d417247b6ee91e4b3a36edaf1a87d80d5eec86718cdde8c56e8c88ddc2103b0b3168cb78fb7d506ee1e5c9e78291bfffa058ab938fd56edbde1a8cbeedab8127cfd0f62cc4180d4f1e78da92e709eff52d247fdcf01cb77a9a6621562bb4ab9da15d198845c7a67d8a97031f8edfed118c1dc9331632108b8e4dfb1dc0483efc3ca1cf75ea3ff6f37069669897a12f85d744148f9efd451cabc14f757e3f6b986d8563ab87bfe3676b9be763cacb302f28161d9bf6295e3db4a76dfc190ba365cc7b8c5c63440662d1b1fdd8d8df5bc65fb3519dd71cf8cec3985418eb98540f6ce3719d1277aea5c4e6f8bcca400c1adb48f302f8a9ce6cf783043bb6ed807197a1ff15cabd7ec3f120f93c2ee4b15f8f86a71d7838fa3e537fcde3e7fe9f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fa26d55b2584917c05e0e198e70f9f1fe58e45c7b7eb3adf86759de4d72d0a795cb3a47b0c977b6dae813a4f6686eb7e1fd6d3fdb5415cd35cc5abdda8eeb3a80fce5d8be55c438c5b078e5abf6c4e2c76e130d77a9b7d868a7d0e59aba7ebaa084d19ee5319a169c6d314ef535ce9f1d83c9d573dccc6b1f657ee5a246a45e524d7f6f01e03def3521c3f2817aa8291e3077ece74251e7be41a26ad977779b16ba0ceff6486cf0ddd8b4affcfa17fcf93add3ed1d9bdeb31cfcdddeb11bdc7b89a3d63b7e2bbc97eafc1f8ca96fad0afeac19c7fd1f382e07d056dcfaa08cebe6c97f0e17d7f1dbcbe0e9041e8e7186e97a238f7d20e975fc6e4faba8eb18aad305fa7533e817752d4afb144f99955999955999955999955999955999955999955999955999955999955999e533e36f4589350bf50a4218c7e9de87703d839eff42c7b7eb3a2fae1a8ecbbd0e476b4e2bbc36d7409daf540dd77db92bd707e7deef10772e19d6f34a9e4b8a570fedc1b520aedf7377783c1d115a50b939b1d8c575fce4351e5ec76ff7742d4468cad55f718d1535c5fedae6f1e0da687d70eebd255938ce78dc3b149717140ffb5207f8a88cbf8fe638cff859e2dfd743f170fdfa51a76d43c075ee0b79ce71630db4a92f3837bf6ba0ce0761ecfbb02be33d1c78efc863117fa7add43a35e9c7f22cbb7c71dd772d70f6411c8cbd0e58138add86b133ce280ef96ba0fc85aae1ba548ff420ad89ddf6117a2618b2fbef6bf3de97833a3d11edef0b926d7fafc7d3eb31db73f231c8b3c7e0f39f6b4cea89d16839684475f03a88eb9e3c7f8cf4ef6fc4fbf6eabc3a78cd4275be046354dcfda351f71c727d8ec5dd7318756ddc098c7e1bfdfb3c2bfd3eadc761bc48fa3eadc72187f03eadc03bfe0a383e71d505f19f2d54e7bbdef1fd6b727a0fde0746757e00e34583bb67b13e38f7fa1bef991a8fef5771f749533cbcaec1befd97da6e99d740fdbe049931279005af13a8ceafbc73d61dc3bd3ae2bd4fc6bc97b46a7165fcfee2eb6775e881f7f425a243b1cff77a6da1bcee81b6509dfff2ae0193bf6e295e0326dfd691d724340e7444b495eafc37f4b53fc2351e9d27fcde51577deedf692b750d48fad9368ff7f38131b684e703d7560fd7f59ff34b5a97fb7ce02eef7d129f0ffcbf906775701f3ad758bd2e46a315a011d5c1df06d1e7083ecb37ea3386ebdefeb8cf98a86750e2f8dc503dfe6cfebc5ad43502d5a1f7e235c22cc7dce074f6ebfaf385f47999e47dc3f85b8956888bbf956865d2330fbaf5c13e5e179ccfd879a6d871cf9cce8f43ecb8674e8f47ec462f76e338c656cd5573499a333c1339fcfd193eb3d46ea5ae4b892107efab4a0163750a186b52c0589b02c6ba14304e4a01e3e414304e4901e3d414306681f17c7eb633e85318ab3e5ce7abd4b506c66e61d2a29cffbf83f9ff522979ed83b119bed3855ab404a3d702bfe7713cfba1dcffeb8518f0ff2e989102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e392143036a780f18214305e9802c68b52c078710a182f4901e352654c8471252f6361ac8c9687e3fffc7b2affe718034f3eea9e53a6df9e94fdffad313f9fb46daccf8dc37b4b78ff4fb8a7f66c3b8e7b47ca7db65da9ff6f9589b1305646aefbd8f1773ca3e1c1df4546fdb68681b1305646aedfbfe06ff446c3d3059a754668c6c058182b23d7bd72e5decb89f7f4774568c6c058182b23de579d204fa85977193c6b40b3ee08cd18180b6365e4ba2f390b3146c3d3039aad89d08c81b1305646a6dfb6859af594c183bf01eb89d08c81b1305646cbb39649b3de3278d68266bd119a4962449ea49f93dd1b118be33783e5b69d1890714a0a18a7a68011ef93e018bf4add27d1cbab4f61acfa709daf52f749606c86dfc7845ae0ef21fe9216eb79794ade2781b137306981bf57f94b5a6c001e8edfcf6421c66878882107ef9b9102c69929609c9502c6a61430ce4e01e39c1430ce4d01e3bc1430ce4f01e38214302e4c01e3a214302e4e01e3921430e27755866bc592df5f364cf0d871df55267aecb8ef25133db6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae792e29761ae6f89571e231224f73723c796c3bc6ea13d0f6be089e0c53db31d626016d2786b4316e4c01e3da1430aa8ec57b10c7c268793633f16c2a836733f06c61e2d95c06cf16e0d99a3c4f98535bcae021861cbc6f6d0a1837a6805175541dadd92dffd436d55110631a745446655446653c1f8c6918c3953115f958182ba3e5d9963c4fa8d9d63278b68166f4be365ec6c258192dcff6e47942cdb695c1b31d34db16a119036361ac8c966747f23ca166dbcbe0d9019a6d8fd08c81b1305646cbb333799e50b31d65f0ec04cd764468c6c058182ba3e5d9953c4fa8d9ce32787681663b233463602c8c95d1f2ec4e9e27d46c57193cbb41b35d119a313016c6ca6879f624cf136ab6bb0c9e3da0d9ee08cd18180b6365b43c7b93e70935db5306cf5ed06c4f84660c8c85b1325a9e7dc9f3849aed2d83671f68b6374233a98c6b53c0b831058ccc3a16c6ca6879f633f1ec2b83673ff05ccac4b3bf0c9e4b81e7b2e479c29cbab40c1e62c8c1fbd6a68071630a185547d55112a3ea58393a2aa3322a63798c7d2960d473ad8c521919be5f95fc0dcda5133c768317bba14262c7fd8666a2c7d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf25c53e907cec42b9cf9839003c1ccfbc616a67de1ef77277ac3f25a89fd5ea0a4fab4b3dad7250e772d0ef0a06fd3210978e4dfb14af5ce6a70960668a5d98668e3105da4f31367a7ad8f85732b53d6eacbf7282c78e1beb277aecb8b17ea2c7d63cd73caf84d89ae79ae795105bf35cf35c4a6c2cd706c3d7edf4fc537b8ca7bb728ddb4756f2539dcb26155f1b02ed431cb1b50fe9674525c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cfe5e539e643d538f0041e4f50826783309eddc2787608e359238c67b1309e4e613c7385f11484f1cc10c6b35518cf14613ccb85f1540be3d9248c272f8c67af309e25c2785608e399278c67a6309ea9c2786a84f16c16c6b35a18cf3e613c7b84f1f40ae3592a8ca74718cf36613c5dc278e60be36917c6334b18cf4a613c59613cadc2786a85f1ec14c6d3228c6799309efdc278d609e359208ca749184fbd309e9c309e3a613ceb85f1ec12c6b35d184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc278b608e399248c6791309e39c278a60be36914c6335918cf783c6fa81c9e8c009e6c70ee33c9b2f0f703e0abf2de6bc7abb6a6e1bf5fe5fc55f09eab5db93ae2d857818f7e1b7e75c47b51a7aba02d7dae9c7f6a5ba813c6ea837d8a570f1c570be139208c67b2309e46613cd385f1cc11c6b34818cf24613c5b84f13408e399268c6795309ed9c2783a84f12c14c6d32d8c67bb309e5dc278d60be3a913c69313c6532f8ca74918cf02613ceb84f1ec17c6b34c184f8b309e9dc2786a85f1b40ae3c90ae359298c6796309e76613cf385f17409e3d9268ca74718cf52613cbdc278f608e3d9278c67b5309ecdc2786a84f14c15c6335318cf3c613c2b84f12c11c6b357184f5e18cf26613cd5c278960be399228c67ab309e19c2780ac278e60ae3e914c6b35818cf1a613c3b84f1ec16c6b341184f55040fc3ff7f19f2d0fd6b746cda3f202436c37908ffdfcf6b98da74ad3b56ad3b2ef153bc1aa8739dbb30b0f7a3e07b89cbbfdf10ef9dbb1634ba96a92d743e32def9618e5dc0fb2a0360083c7d82081e8efb5199da39220f13fcff67f356abeb3cadfc7397833ad7807ed731e81795db7fee03ee358dcc96873e3b88350bf536086124df95bc3c61bfdd108cdc4af5dbeb8087630c636a67d8bfaef7dab4214277aa83b97a3d433ba3fa0eed5f0fe7216dcc9667932b136b16ea6d12c248be6b7979c2feb52918b995ea5fd7030fc7f8c3d4ceb07fdde0b5695384ee540773f506867646f51ddabf01ce43da982dcf665726d62cd4db2c84917cd7f1f27464a1cdb495ea5f37000fc7f8c3d4ceb07fdde8b5697384ee540773f546867646f51ddabf11ce83322b7314b3e5a1df98106b16ea6d11c248beeb59793af25968336da5c6b11b8187639c67d23d1cc76ef2dab4254277aa83b97a13433ba3fa0eeddf1411bb3948568b9b47a1c5cd113c378fb31614af5ce66b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea6c37d55975569d55e724985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39825e86c79e81931c49a857a5b853092ef065e9ef077415b83915bc6dbef83f2cdc07323833e4ced0cef213fe8b5696b84ee5407fbd741867646f51dda3f08e7e16019cc37a59059751e1bb3e5a167c5126b16ea6d13c248be1b7979c2716c5b30722b358e1d041e8e719ea99de138d6efb5695b84ee5407fb573f433ba3fa0eed533c6556e63866cb43ff870db166a1de76218ce4bb9995a710febe717b30722b358ef503cfc1c4798ae31883eee13876c86bd3f608dda90ee6ea21867646f51dda3f04e7a11ce69b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73e5e86c79e8ff0e21d62cd4db2184917c075979dac375871dc1c82de3edf741f910f0f427ce535c7760d03d5c7738ecb5694784ee5407fbd761867646f51dda3f0ce761a233df944266cd8df161d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e6396901b9667a72b136b16eaed14c248be7e5e9ef0b9073b83915ba9fb760e03cf21067d98da19deb773c46bd3ce08dda90ef6af230ced8cea3bb47f04ce83322b7314b3e5d9e5cac49a857abb843092ef102f4f388eed0a466ea5c6b123c0c331ce33b5331cc706bc36ed8ad09dea60ae0e30b433aaefd0fe009c076556e62866cbb3db9589350bf5760b6124df615e9e701cdb1d8cdc4a8d6303c0c331ce33b5331cc78e7a6dda1da13bd5c15c3dcad0cea8be43fb47e13c28b33247315b9e3dae4cac59a8b7470823f98ef0f214b2d066da4a8d63478187639c676a67388edde2b5694f84ee540773f516867646f51ddabf05ce43da982dcf5e5726d62cd4db2b84917c03bc3c61ffda1b8cdc4af5af5b808763fc616a67d8bf8e796dda1ba13bd5c15c3dc6d0cea8be43fbc7e03ca48dd9f2ec736562cd42bd7d4218c977949727ec5ffb82915ba9fe750c7838c61fa67686fdebb8d7a67d11ba531dccd5e30ced8cea3bb47f1cce43da982dcf7e5726d62cd4db2f84917cf879b19f8927e7f1e422b49888b11bbcd80d1512bbd18bdd5821b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d8959a6baa79656a9e398f9a67cea3e619d55ca4e67f4a2e76278e2b5510eb18533b71eb8332cecfd1b64618cf62613c9dc278e60ae32908e399218c678a309ee5c278aa85f1e485f12c11c6b34218cf3c613c3385f14c15c653238c67b5309e5e613c4b85f1f408e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8ca74518cf32613ceb84f12c10c6d3248ca75e184f4e18cf01613c75c278d60be3e916c6b350184f87309ed9c2785609e399268ca74118cf24613c8b84f1cc11c6335d184fa3309ec9c278320278b2c1b9bf47c1df1354838feeefdf0fbe67b8f201f05545c4a0e31c071fcd9fd231ec78b3aee95c862a78cfad115ccf888847716e8d78ef78e88eb1fa609fe2d503c7ad4278260be36914c6335d18cf1c613c8b84f14c12c6d3208c679a309e55c278660be3e910c6b350184fb7309ef5c278ea84f11c10c69313c6532f8ca74918cf02613ceb84f12c13c6d3228ca756184fab309eac309e95c2786609e36917c6335f184f97309e1e613c4b85f1f40ae3592d8ca74618cf54613c3385f1cc13c6b34218cf12613c79613cd5c278960be399228c6786309e82309eb9c2783a85f12c16c6b346184f5504cf01269eb8e7291c1010dbeee74117bb65e1efe3f13bc0031e23ed1f0346e4259e3c134fdc3328f20262dbf6d377095a83cbc2dff1775c5c3995f718693f2aa7f0beb4d54c3c71cfed582d20b6d582e62ee91e802cfc1d7fb7c09553ab3d46da8fcaa9465e9ef0ff966809466ea5ee35c23ec7710e99da99c7fe97e03334229f45dde26985cf501d8ffbe4e3c6038aa7ccca1cc76c7968ed8258f1f36c3c7ef7361ac6a8cf57069e707c6c0d466ea5c6c763c0c3f1f9c1d4ce701c3be1b5a9354277aa83b97a82a19d517d87f64f44c46e0e92d5e2e428b43819c173729cb5a078e5321f4821b3049d2dcf2a5726d62cd45b2584917c795e9e707c5c158cdc4a8d8f278187e3f383a99de19870ca6bd3aa08dda90ef6af530ced8cea3bb47f0ace4339cc2752c8ac3a8f8dd9f2d01c32b166a15e410823f98eb1f214f25968336da5c6b153c0c331ce33e91e8e63835e9b0a11ba531dec5f830ced8cea3bb43f08e7419995599995599995599995599995599995599995599995599995599995599965335b1efa6d23b166a15ebb1046f29d64e529ae3bb40723b752eb0e83c0c3b12ec3a47bb8ee70da6b537b84ee540773f534433ba3fa0eed9f86f3a0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2992d0f3d739b58b350af430823f94ef1f284bfdbea08466ea5d61d4e030fc7ba0c533bc37587dbbc367544e84e7530576f63686754dfa1fddbe03c28b33247315b1e7ab615b166a15ea71046f20db2f214d74f3b83915ba971ec36e0e118e799740fc7b1335e9b3a2374a73a98ab6718da19d57768ff0c9c8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9f2d0ffb946ac59a8d72584917ca75979dac37587ae60e4566adde10cf070accb30e91eae3b9cf5dad415a13bd5c1fe7596a19d517d87f6cfc27998e8cc2752c8acb9313ecc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f274bb32b166a15eb71046f2ddc6cb133ef7a03b18b995ba6fe72cf09c61d087a99de17d3b435e9bba2374a73ad8bf8618da19d577687f08ce83322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6add43836043c1ce33c533bc371ec76af4d6b2274a73a98abb733b433aaefd0feed701ed2c66c797a5c9958b350af470823f9f073b9878927e7f1e422b4385fb1ed7eaf2bd7bbd72cfcbd1718b9c6c31e8f91f631c79197787a99781a3c9e86082dce576cdbfe75ae3ccdbd66e1efeb80912ba77a3d46da8fcaa906e059c7c4d3e8f134466871be625b2dd6bbf274f79a85bfaf0746ae9c5ae731d27e544e3502cf7a269eb83169fd38c48eeb5fe3113b2e57c623b66aae9aabe6aa39a7e699f3a879e63c6a9e51cd4569ce701d15cef7528c001870eb83327e57e0b8f6646a673eeafbd87aaf4df87d0ce71cced7f70d6556e63866a6798b8eac179bf4093c1eda8698b518cf79d35eaf4d6998372dc57c2285ccaaf3d8986dec3b928fdd91f562933e81c743db1dcc5a30b5331c0fee0ca235a67839a883797a27433b3310978e4dfb77c2792887f9440a9955e7b131dbd877251ebbf83c798c4dfa041e0f6d77316bc1d3cee278707710ad31c5cb411dccd3bb19da9981b8746cdabf1bce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9978ece2fc3dc6267d028f87b667326bc1d3cee2fcfd3d41b4c6142f0775f09cdfc3d0ce0cc4a563d3fe3d701e945999955999955999955999955999955999955999955999955999955999955936b38dfdace46387bfc7c1d8a44fe0f1d0f62c662d98da19cedfdf1b446b4cf1725007cff9bd0cedcc405c3a36eddf0be7419995398ad9c67e76e2b18beb79189bf4093c1eda9ecdac054f3b8be3c17d41b4c6142f0775f09cdfc7d0ce0cc4a563d3fe7d701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b47671bfbfec463b787f3f7189bf4093c1edaee67d682a79dc5f9fb0782688d295e0eea609e3ec0d0ce0cc4a563d33ec5ab04e6132964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f27f9d8e1efd93136e913783cb43d87590ba67686f7bf3c18446b4cf1725007f3f441867666202e1d9bf61f84f3a0ccca1cc56c633f947cec42d68b4dfa041e0f6d0f316bc1d4ce703c783888d698e2e5a00e9ef38719da9981b8746cda7f18ce43da98f1fc65928b1ddeb74931aadcabf53dd795abc1f73c57ae01dff35db9167c2f70e53af0bdd0952781ef45d036f2bdd8955782ef25aebc1e7c2f75e575e07b992bf782efe5aedc03be57b8f210f85ee9cab783ef55ae7c07f85eedca7782ef35ae7c17f85eebca7783ef75aefc4cf0bdde95ef01df1b5cf959e07ba32bdf0bbe37b9f2b3c1f76657be0f7c6f71e5fbc1f756577e007c6f73e5a5e07b24c2f776577e0ef8dee1ca0f82ef9dae7c007cef72e529e07bb72b4f05df5f41995edfe3caf5e07bd49573e07baf2b4f03dffb5cb9017cef77e5e9e0fb802b3782ef83ae3c037c1f72e599e0fbb02bcf02df475cb9097c1f75e5d9e0fb982bcf01dfc75d792ef83ee1caf3c0f749579e0fbe4fb9f202f07dda951782ef33aebc087c9f75e5c5e0fb9c2b2f01dfe75d19cfef5fbbf243e0a371e561f0d1b8f25cf0d1b8f23cf0d1b8f27cf0d1b8f202f0d1b8f242f0d1b8f222f051debd187c94772f011fe5dd4bc14779f732f051debd1c7c9477af001fe5dd2bc14779f72af051debd1a7c9477af011fe5dd6bc14779f73af051debd1e7c94776f001fe5dd1bc14779f726f051debd197c94776f011fe5dd5bc14779f736f051de3d023ecabbb7838ff2ee1de06b76e57782ef02577e17f82e74e57783ef2257c671e662577e0ff82e71e547c14763e17bc1f734577e1ff896b9f2fbc1b7dc953f00be15aefc41f0ad74e50f816f952b7f187c2daefc11f0b5baf247c1b7da953f06bebc2b7f1c7c6daefc09f0155cf993e06b77e54f81afc3953f0dbe4e57fe0cf8ba5cf9b3e0eb76e5cf816f8d2b7f1e7cf4394ee38cedcfb65f920ea491f5519b5b23da42bec9d096be20d96b3a8a45c7a6fd7660a47350187fc6c26819db3c46cbd3c9a019e6156da5be3375024f07030f533bc3ef4c5d5e9bdabd36e5a0ced3a09d5d0cedcc405c3a36ed77416c8e738e5ad4bae32ef3b4a8c13aee03cd7e9e96d2918e61f3b710d1961ee6b6d0b1695cea1987d8dd5eecbc171bc763da4af5af6e605ec3c06c8fdb9bfc71c3feb5d61d8b728ae2e4a14deb4083a4da84b133ce280ef96ba03cbf69b82ed5233de8f38bd86d2ed3b94476ff7d9ddefb7250a727a2fd7d41b2edeff5787a3d667b4e1a9a863918fa4398033d1e07ede741bbde18ed7a403baa839f7f2d4cdaadf17868bf0578e81aa70b7c74ad40fc789dd53a0edcfeb8d715c14dbe6e606c89602c24cf185eebb4788cb45f0046f2ad019e6e26cdfc73bdccd3073f97ebbc3af4de1aa8b31a3e1bb311756dbf5b9a196e177d07ff5390ec985ec7a017ce0f04a04fe06918805ed4ce5a069ea9c1f01cc1d9a1c133fdb70c5c3ed07f240368351e26be66229a51053e2c5747f88260e454084ec9d254084ec95679b2e0140cd5b75fa56cb368ba61e0e4f1a1a79f1a3875f8ccdda787068eec1dbc05a96b3d7a248d6b0192a28fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b431b533fcd09be2b5a9ce6b530eead4c2dfa630b4330371e9d8b43f252276820351a8c5d4516831358267ea386b8113dfe4c39e4a7fc7c5932aaf2dd8a3b14d7e9e27da200ab8148e9f7170f66fb6b3d7bac64c0a864f368d9ef68ad69e043b636a3fb5ec8ca89d01b543909de1b4339af643cdce58da194a3b23696720ed8ca39d61b4338a7606d1ce18da19c2e6a038036867fcec0c9f9dd1bb04d8be0cbcf65bb5fd84b433727606ceceb8d92b2b7b0560af46ecd5b7bd52b4b31ff60ac17eb3b4b30cf6d3d65ec9d84f69fbc96aaf14ed15a2bda2b757b876956a83b18d4eeb4dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb17dc6f61bbbd4d865417176fd72635718bbd2d8d38d5d65ec6a63d718bbd6d875c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b86b15b83e21d3a278d9d323668ecb4b1db8c9d31763628ae98d91532bb226657c0ec8a975de1b22b5a7605cbae58d9152abb226557a0ee0f8a2b4c76a5c8ae0cd95501bb0a6067fded2cfff383e22cbe9db57f51509c95b7b3f076d6ddceb2db59753b8b6e67cded2cb99d15b7b3e076d6dbce72db596d3b8b6d67aded2cb59d95b6b3d076d6d9ce323f12146791edacb19d25b6b3c27616d8cefada59de4783e22cae9db5b5b3b47656d6cec2da59573bcb6a6755ed2caa9d35b5b3a47656d4ce82da594f3bcb696735ed2ca69db5b4b3947656f20bc61e33f637c6fed6d8df19fb7b63ff60ec1f8d7dd1d8978cfd93b17f36f62f41312fffd5d8bf19fb8ab17f37f61fc6be6aec3f8d7dcdd8d78d7dc3d8378d3d6eec5bc6be6dec3bc6be6bec7bc6be6fec07c67e68ec47c67e6cec27c67e6aec67c67e6eec17c67e69ec57c67e6dec09634f1afb8db1df1afb9db1df1bfb4330bcba8183c81fdd0ecdb4f70f0d0d9c3c3dd43c34d87cf2f61343c74f9fb8bbf9cee343c79a07ef183873f4c4e09df8e6f7b8618b9611369d39d37f77f3f1534706ee6a1ebc7da879f068f3a1c1db4f1d398b6ffaa27bd3c27323f61f39121fec9b554f81f43b630cfa4bf73e5aa0d955ba6d4f8c45903f8ce54d33abc7d6a04bdda70e7d7bbfa278b5db7cf6c4e05073bef994f9b7ff8479cfc091d666fcdb5923f2d9a1e6b343fd67869a8f9e193cd9dcd68ac7bd76ca181a51d3348637b5368dbee5c1ff03d8e2fb122d0a0400", ->>>>>>> master + "packedBytecode": "0x000000028df71de500000047e21f8b08000000000000ffed9d779815c5baee7b604074cd8898b3830915816118f200833967141111866100058628823991a3398224c95940411110c3ce3927756f773c61ff75ef39e7deebb95d6bd577e69da27a316bec5abc6b56f5f3d4acea6faafbfbd5db5f57a7eaae822035fd334c053adf3c4ce707874ef2ff4afd5bfacda6ce31aeabd42567418e7036cb11cee639c25998239c2d7284b3658e701e95239cad7284f3e81839155bb3a0fe1437ef310e748d9b3191639a16e580a6c539a6e9b139a069eb2037daa8e37284b34d8e701e9f239c27e408e78939c279528e709e9c239ca7e408e7a939c2795a8e709e9e239c67e408e79939c279568e709e9d239ce7e40867498e70b6cd11ce737384f3bc1ce13c3f47382fc811ce0b63e46c0f9cedf4ef45faf762fd7b89fe95b297eadf0efab7a3ae63a19eefa4b8c2a41ed29419ffeb12a6f230750d5337e37fddc3d4234c3dc3d44bffaf44ffaf77982ac2d4274c7dc3d44f6bd03f4c9785e9f2305d11a62bc3745598ae0ed33561ba364cd785e9fa30dd10a61bc37453986e0ed32d61ba354cb785e9f630dd11a60161ba334c7785696098ee0ed32083e59e300d0ed3bd611a12a6fbc234344cc3c25415a6e161aa0ed38830d5846964984685697498ee0fd303611a13a6b1611a17a6da308d0fd384304d0cd3a4304d0ed394303d18a6a9617a284cd3c234ddd0ece1303d12a647c3f498c1f978989e08d393617a2a4c4f87e999303d1ba619619a19a659619a1da639619a1ba679619a1fa605615a18a645615a1ca6e7c2f47c985e08d38b617a294c2f87e99530bd1aa6d7c2f47a98de08d39b615aa2596447581aa6b7c2b42c4ccbc3b4224c2bc3b42a4c6f87697598d684696d98d685697d9836846963983685697398b684696b98b685697b98de09d38e30ed0cd3ae30bd1ba6f7c2b43b4c7bc2f47e983e08d3de307d18a67d61da1fa60361fa284c07c3f471983e09d3a761fa2c4cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf7d7c632bf09d36f0ddbefc2f47bc3f687307daef35fe8df2ff5ef1ff5ef9ff4ef57faf7cffaf72ffaf7affaf76ffaf7effaf71ffaf75ff4efbfeadf7fd3bfffae7fff19a63d6d53f95641dd5419c4d44695d7249ffd88f8ed82fa93d2a2b9fe9ffc96687ba19e975fd1ae859e6f61d85beaf996c67a5ae9f95686bd8d9e6f63d84fd0f32718f693f4fc4986fd143d7f8a613f5fcf9f0ff64400f786b55dd99a6b5301d8245e9b81ad85b635075b4b591dd88ed2b6166093eddb126c476bdb51603b46db5a812da16d478b96612ad2b6ca20ae58291da6d65b1cf77af5f3b263e3e71daed6dbda11ef71f1f38e50eb6de38057c5c7f17a5dc741dc9ca06d6dc076a2b61d0fb693b4ed04b09dac6d2782ed146d3b096ca76adbc9603b4ddb4e01dbe9da762ad8ced0b6d3c076a6b69d0eb6b3b4ed0cb09dad6d6782ed1c6d3b0b6c25da7636d874931b9c03b673b5ad046ce7695b5bb09daf6de782ed026d3b0f6c176adbf96093f6f702b0c9f9e285daa6da8ea30b60196d97762bb98cb4d960bb58da6bb05d226d35d8da4b3b0db64bc1b7d83a405b23b68eda26ed96fa5f2f9daf0ce2da4fca6ad47a7bc7bdde70cd6abd7de25f6ff29963dfa04eeb4af0d31bb4eaa7f331f66bea8cbe0b74123f622f84fc755056ca891e72ec1176758ca9d0f97e6996eb652c570c652a2cf5af0ce2ad7f1f83a78fc1dc02f26e62b64b171fb30d9e328ed98150d68c3d390f6a8a317b23703888d9ee3e661b3c651cb33550d68c3d39176e8a317b0f703888d92a37315b56ea633675df2c08ecb127d7434d3166470347fc31dbd5c76cc3a78c63f629286bc69e5c1337c5989d0a1cf1c76cf72a7f6ed0e029e3985d0465cdd893fb334d31669f050e07315be3dbd9064f19c7ec12286bc69edc2b6c8a31fb3c70c41fb33d1dc56c171fb341ea196810d8634fee5b37c5985d061cf1c7ec707f7fb6e153c631bb1bca9ab127cf509a62cc6ed679f59ce127fa39c39960fba9b69d05bcf1c776755747b15de6633bd5372408ec312acff39a626c7fa8f32a8e7f01fd11c4f64b6d6b0bb65f69dbb960fbb5b69d07f572b00f54f97da0c153c6fbc06fa1ac19cbf26cb929ee033f020e07315bed63b6c153c631fb77286bc69ef473688a31fb07e07010b3353e661b3c651cb3ff0165cdd8bb48e79b62cc4a5f5375bef0853e5fb8046c5f6a5b7bb0fd51db2e05db9fb4ad03d8bed2b68e60fbb3b67502db5fb4ad146c7fd5b6ce60fb9bb69581edefdad6056cffd0b672b0fd8bb67505dbbf6a5b37b0fd9bb67507dbbf6b5b0fb0fd53db7a6a9b7ade257dafe4bcb515f05706f16e5be97729eb96f9ce59f0dddaf0dd3a8bbedb18bedb587c9739f09d001f321518f395902f73cb535a0c3ce8ab3c7e5f5d54ddbb040daf7b39f0747550f704f868084f57e0e9163f4fb2ff6ff7f8d79bdcc65d0c4d13e0ab0bd4ab87837a15802f59b7cc8bbf62b061dbdac3c2d8337ec6b202f025eb96f99ec028366cebe59d2bd97fd4f1b05d411daf837d29794e24fee4bb65c2510e7629736bdb3ab6f69aad08fe8fc7bd6e86cd515c26e3427cc9ba655efc15417dba659fb1aca18c5d0d46576d4401f892757bdf75db41f2781c7770ad636dd3c477ef2cf8ee69f82e377c63db2953ba635b4f608efd9a531fdb2ae25f6f295e9fc8b5a1f8c1f307bc868bab4ee85bae0dc58fd80b217f53415d5929277a483b2cec2a96655b22bbb95c0f63b96228d3db52ffca20defa57183c1506b3da2697c3b1d0c1fe908c81de0687cc9783761511daf506eda4cc45a09dabf6ac97c123f3dd8047dab1eec0e3ea9a288a271bd76387f38de7b078fd2cffc7f30057dbabb3c128f3b6edd513186de72a0eae67d29eab740546b1f5029e2e8e348bdaae5d487c3b8895647b243ee4dc5cf6df6e6097323df50b75aaadbc1fda4a173182f1285343af79e3df4e65c96bf0ae19f0e0b673705dd5d9513c96e2fd9baf837863cd6c97ba1a5a45dde371d596773178645efc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667c6e749d86f4bca75236134fbbfb9bacf9ffcfea15e97ac5f3dd7f93f4efb83959562ff18e907718951e7422853dcacaeec7f437f30f33915f691ece656bbe4b6c4fe9895302ffeb0af156e4b86fe4e25b1f92e1beeea799bfa0698fa8ea6d9f7b39b455317fd9f51d3024353ec8f7fa9c1a3e2b4a2791d9b8b677f993e8b44ad241fe7b3bde2c01eebf16f97b27acfac9b05f5db0f3cceb8eabf236db53c2fef6df82e84326734abdb36d2b74ac618ee622c87fd7e64ddb2cc2560af30d6dd5a2f2b1c2d8cf5778765a5ccd9d0a6ee6f56a79983b6b22cd3beebf8dc3cfee370ea397e970c783a038f8b76c6d1f94629ee03713fc737fba7d9ce63a40cf6ed73d0af326d7f27f1e7993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999f59f198cf5af1fdda7212c62cf57d483ecf906f95c9fa93df0b6e56e7d7f5733879e6d4dea833be3bfacf667565b7eb7c5170687f87a86de9eafb1451db52fce1b767f059908be7ba05e04bd65d66d142f225b1f94e3dc7773136843cc7ef62e85a6ed1d4d5fe8acf585153dc5fbb1a3cf86c34eadb3e6586cd65dfa1a8b8107fb82f95814df2f87eb48bed8cc712b35f8ff8c3e7d7dfd1dab60e5c6dfbb25297ed067e37a5323834bef17b2a3f84b6efc73a8f7d38b0efc81796ffcb94ee39b5e8a7eaece0fb9aa505b02ed9beb66f7bf607d6987c77c67515e8d4dfd0a010f29f37ab2b2be5a4ac682dec6a1f916fc020bbb95c5763b96228d3d752ffca20defa9bdf5aed6730ab6df23388b32fe0f8efaa4dea1ba1d125a09194c1f320577df2cc36d2ecdf88fdf65a1a65f09c45cafc0ddaa8a8fea3b63e87ae8e63517d0e6de7c69d81d1aca3d9cf33dffb69fd27b41771f7d3fa4f8821eca71518eb6f0feb17ae9641f4b145cafc3f63fde639b92c83fdc0fea7ff137ccfa54ce73339273f52d757b673725c2eaaee8a19bf8356192333c604b2e079829439466b2ddbac2282bba765d9e28865452bf35b6145c1a1fab9f9ce5a6a9fef67d445e21abf412e654e80bab8396f499d03bafaa65c25d449e5cb2c759532a7c2be76bace27603be17e7bb1e5ff32a53b07c431dc2f8bbfcec9ed7b397056821ff47d05b0c6e4bb33fa967340f123f642c85fd4bcaeac94133d446b6157fb889c4721bbb95c6f63b96228d3df52ffca20defa5f66f05c6630ab6d7216c4d9c5d00fdd555bdd3f42a3f6a09194c17b8ab6ef80da8e31aefaf6471d63ca80d16c37f138e992cd7c4fc8bcaf663b479032b22c9e237487763661296bde2f94e3659cfd86f15d89eee017df9570f5ede65ea05b25cce379c191f4ede23bb6ca5fd49809bdb2e03b6acc846cf86e63f86e9345df5e73af3993e60ec62048be7f86df2c5553baf3521c9740966b068c2ec6724804f5bf3d7e38461cdf41966b0e8c2e8e0f997efbbc3b30ca7285c0e8e2dd521c7fa3218cf88d613cce0ba3836fc5766eecb762f19e5e4b60647a67139f4d1d058c2eeea136f65d3d3c9f6f05bfaec625ea9201239ecfcb724703a38b7be3f86cb0218c785d24cb1d038c2e9e61653abe137e7b1eef2dbb644c776c77dc17a52cd37b2f156e79d29e6ba06f07e31a26b5c0fb8c87d3a28f5b9eb4e73ee8dbc17dbfa41638cee0e1b4c067832ec63d4c04f59fc31d8e079f5fca72c70363a523c67e19305602e3ffdc2b06c6fe8e182b3360ec0f8c623f11181ddc7f4d32f6cf8011ef53ca722701e3e58e182fcb80f1726094e54e064617f75213e0b7218c5700a32c770a305ee988f18a0c18af044659ee5460bcca11e39519305e058cb2dc69c078b523c6ab3260bc1a1865b9d381f11a478c5767c0780d30ca726700e3b58e18afc980f15a6094e5ce04c6eb1c315e9b01e375c028cb9d058cd73b62bc2e03c6eb8151963b1b186f70c4787d068c3700a32c770e30dee888f1860c186f044659ae04186f72c47863068c3701a32cd716186f76c47853068c3703a32c772e30dee288f1e60c186f014659ee3c60bcd511e32d1930de0a8cb2dcf9c0789b23c65b3360bc0d1865b90b80f176478cb765c0783b30ca721702e31d8e186fcf80f10e60bcddc238c011e31d19300e004659ee5260bc337ec6e4b5f4800c18ef049ebbe2e7496a7667063c77b9e5497e57ef4e8bafbbe3f795dc16038386d7fd6ee019143f4f725bdc9d018f3014c372a8d93df13326351b9401e33dc033387e9ea466f764c0331834bbc7a2d9bdf13326351b9c01e3bdc033247e9ea466f766c0330434bbd7a2d97df13326351b9201e37dc033347e9ea466f765c03334a8d3ec3e8b66c3e2674c6a363403c661c053153f4f52b36119f0548166c32c9a0d8f9f31a95955068cc381a73a7e9ea466c333e0a906cd865b341b113f6352b3ea0c1847004f4dfc3c49cd4664c053039a8db06836327ec6a4663519308e049e51f1f324351b9901cf28d06ca445b3d1f13326351b9501e368e0b93f7e9ea466a333e0b91f341b6dd1ec01478cf767c0f8808527eeef64df6ff135d651ddc7040dafbb3014c372d84f629c23c6b119308e0346590efb49d43a621c9701632d30ca7209c78ce9fa49d482eff1f1fb4eb64bb541c3f519ef96276d3f09f43dc19116e383866b31c12d4fda7e12e87ba2232d26040dd76222f04c72a045027c348447188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc4838e18a764c0f82030ca72d84f62aa23c60733609c0a8cb21cf69378c811e3d40c181f0246590efb494c73c4f850068cd3805196c37e12d31d314ecb80713a30ca72d84fe261478cd333607c18186539ec27f18823c68733607c04186539ec27f1a823c64732607c14186539ec27f19823c64733607c0c186539ec27f1b823c6c732607c1c186539ec27f18423c6c733607c02186539ec27f1a423c62732607c121865b9071c33a6bb7e79b289fb8eba5669eabea3ae4b9aba6f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fd9403df09f0215381315f0979612886e51ef08c4d9a11794ae2e329c5baa3afa709eafeb485a7c051ddd1d733047517865c637c2a07181fc80146af63aa0f62631815cfb38e789ec980e759e099e188e7d90c786600cfccf87992313523031e612886e51ec801c6a77280d1ebe8756462f43ae68f8e9ed1337a46cf78241873a10df78c39118f658d65543cb3e2e7496a3633039e59a0992c77570e303e9d038c4fb9652c6b2ca3e2991d3f4f52b35919f0cc06cd64b9bbdc3296359651f1cc899f27a9d9ec0c78e68066b32d9a39602c6b2ca3e2991b3f4f52b33919f0cc05cde6583473c058d65846c5332f7e9ea4667333e099079acdb568e680b1acb18c8a677efc3c49cde665c0331f349b67d1cc016359631915cf82f879929acdcf8067016836dfa29903c6b2c6322a9e85f1f324355b9001cf42d06c814533078c658d65543c8be2e7496ab630039e45a0d9428b66ac8c0fe400e35339c0e858c7b2c6322a9ec58e781665c0b318789e73c4b338039ee780e7f9f8799231f55c063cc2500ccb3d90038c4fe500a3d7d1ebc8c4e875cc1f1d3da367f48c99313e9d038c7e5b7b46564607d75769df457aae89fb8e7a17a9a9fb8e7a17a9a9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df2fc4efbb2cd36fccbc003c2ebe79e3a89ea56abd2fea757d1da37e4aab970cad9e33b42a86322f827e2f39d0af00fccaba655efc65cadc8e80d991efb263c3751c0df5171f4f197a28ff2f3baa7b545bff7213f71dd5d63775df516d7d53f7ede3dcc7793ef8f671eee33c1f7cfb38f771cee21bf32d82baf376f9fea95ac72b3a5fa8e7a5fcd36097320f1f95fa6d1df87dc8856fbf0ff963453ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c633c4cc8024f60f00469786691f15493f10c24e3b99e8ca71f19cf62329e87c8787a90f18c21e3b98f8ce736329e27c978ae22e3799c8ca73319cf24329ed9643c35643c83c8786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e6cbcbf94094f47329e0a329e29643c73c8784691f15c4cc633988ce722329e9bc9782e27e339968ca735194f3919cf23643ce3c9788693f1dc49c6731d194f5f329e45643c53c9787a92f1cc25e3b99f8c670619cf10329e5bc978ae24e3b9848ce731329e32329ee6643c13c9784690f1dc4dc6d39e8ce706329e4a329e69643cddc978e691f18c25e3194ac6733b19cf33643c5793f13c41c6d39b8c673219cf48329e7bc878da91f1dc44c67319194f11194f31194f57329e87c978e693f1d492f1cc24e3a922e31940c6732d194f1f329e85643c0f92f1f422e3194dc6732f19cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243c73049c0ff5f005b336359f5d9d717dad6fdff556d6f06cbbca6f3cd2deb7e156cf22dd9d72ccba24eaf425d2a75bef49b4d499dd05725cc8bbf22e0788d846701194f17329e36643cc791f13c4ac6d3898ce70a329e5bc878ee25e3194dc6d38b8ce741329e85643c7dc878ae25e31940c65345c633938ca7968c673e19cfc3643c5dc9788ac9788ac8782e23e3b9898ca71d19cf3d643c23c9782693f1f426e379828ce76a329e67c8786e27e3194ac633968c671e194f77329e69643c95643c3790f1b427e3b99b8c670419cf44329ee6643c65643c8f91f15c42c6732519cfad643c43c8786690f1dc4fc633978ca72719cf54329e45643c7dc978ae23e3b9938c673819cf78329e47c878cac9785a93f11c4bc67339198f7c6f9085e722329ec1643c1793f18c22e39943c633858ca7828ca72319cf0b643cd790f13c4bc6534ac6730719cf30329e71643cddc8783a90f14c27e3e94fc6732319cf20329e1a329ed9643c93c8783a93f13c4ec6731519cf93643cb791f1dc47c633868ca70719cf43643c8bc978fa91f15c4fc633908ca79a8c671619cf040bcf0b8e78e47d7759b7ccbf40e2dbc1762855eb7ddd519dded0eb6aa1d72bfce2af10cacc3c26f5ab9e0fe1b2c2657e9f00efc5bd011abde1a82eb23d0a8ced83be5f71e4dbfc5eb3ccbfd2c47db7367cb7ce13df6d0cdf6df2c4b78f731fe7f9e0dbc7b98ff37cf0ede3dcc739936f07d70665f89d34990a8cf94ac8e3f5828befcb39aa67bdebc4af63d44f69f5a6a195796d550c655e07fdde74a09fedda53e6c55fa6cced0898312e4a8278e36249fc752a53fd328f065d9718fa62bd963ad234ea18b2b489fb8e3a863475df51c790a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc9f75b3a1fe3756329fa50cf17e57ae02df0bb5ce70b62f4abd6b54cafab50af5b3896835dca344ba47e5b077e9f77e1dbeff3fed8960fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c9b79e92f7e11b0b9eacf1f158bd97897e048fa8e8ac5a6ee3b2a169bba6f1fe73ece997caf70e03b013e644ad7c76f05f02c73c0e3a89ec9671b2b8d3abd60d4a918cae0317ea5837a16805f59b7ccaf041e9926008f8b3868c836479e59643cd5643c03c978ae27e3e947c6b3988ce721329e1e643c63c878ee23e3b98d8ce749329eabc8781e27e3e94cc633898c6736194f0d19cf20329e37c9786e24e3e94fc6339d8ca703194f37329e71643cc3c878ee20e32925e379968ce71a329e8e643c15643c53c878e690f18c22e3b9988c673019cfcd643c9793f11c4bc6d39a8ca79c8ce711329ef1643cc3c978ee24e3b98e8ca72f19cf22329ea9643c3dc978e692f1dc4fc633838c670819cfad643c5792f15c42c6f318194f19194f73329e89643c23c878ee26e3694fc67303194f2519cf34329eee643cf3c878c692f10c25e3b99d8ce719329eabc9789e20e3e94dc633998c672419cf3d643cedc8786e22e3b98c8ca7888ca7988ca72b19cfc3643cf3c9786ac9786692f15491f10c20e3b9968ca70f19cf42329e07c9787a91f18c26e3b9978c672919cf2d643c5790f17422e379948ce738329e36643c5dc8781690f11410f0248243dffd4fc0ffdf049bbca3fe02d856e9fc32b035b3f868aef32bc156a8f3b28ea3c2b4b4eda1eb469d5cbd978fbe2a615efc1501c72a129e05643c5dc878da90f11c47c6f328194f27329e2bc8786e21e3594ac6732f19cf68329e5e643c0f92f12c24e3e943c6732d19cf00329e2a329e99643cb5643cf3c9781e26e3e94ac6534cc65344c6731919cf4d643cedc878ee21e31949c633998ca73719cf13643c5793f13c43c6733b19cf50329eb1643cf3c878ba93f14c23e3a924e3b9818ca73d19cfdd643c23c8782692f13427e32923e3798c8ce712329e2bc9786e25e31942c633838ce77e329eb9643c3dc978a692f12c22e3e94bc6731d19cf9d643cc3c978c693f13c42c6534ec6d39a8ce758329ecbc9786e26e3194cc6733119cf28329e39643c53c8782ac8783a92f15c43c6f32c194f2919cf1d643cc3c878c691f17423e3e940c6339d8ca73f19cf8d643c6f92f10c22e3a921e3994dc633898ca73319cfe3643c5791f13c49c6731b19cf7d643c63c8787a90f13c44c6b3988ca71f19cff5643c03c978aac9786691f14cc80e4f997ab75dde9d0c800ba74ac8af049e371de8e3a89ea5f85d83af635cafd2ea6d43aba58656c5506605e8f7b603fd0ac0afac5be6c55f2e322b1e39a71356fc0ec493248c627bd32d4f72bf7d32a83fa5db6fdf061e17ed9aa37a26f7afd5469d9eb4e82e653056573ba8a76ddf91f9d5b01d728d59f13ca3f3c29a8072cf90308a6da55b9ee4fef54c507f4ab77fad061e17ed8fa37a26f7af35469d9eb1e82e653056d738a8a76ddf91f935b01d728d59f13cabf3c29a8072cf92308aed6db73ce509a8b34ce9f6af35c0e3a2fd7154cfe4feb5d6a8d3b316dda50cc6ea5a07f5b4ed3b32bf16b68367f6cc3666c5237db1853501e56690308a6db5539ef2d204d459a674edd85ae071d1ce3bd23dd98ead33ea34c3a2bb94c1585de7a09eb67d47e6d7597c9704f16ab1be015aacb7f0accfb216e22f53e61539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5cca0b3e291b111853501e56692308a6d8d5b9ee47b413383fa5381315f09f9f5c0b3d6813e8eea99ec43bec1a8d34c8bee5206f7af0d0eea69db77647e036c874c98d7e520b3d7b971cc8a6796ce0b6b02cacd226114db5ab73cc9766c56507f4ad78e6d001e17edbca37a26dbb18d469d6659749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3755e5813506e3609a3d8d63be5294bbedf383ba83fa56bc736028f8b76de91eec9766c9351a7d916dda50cc6ea2607f5b4ed3b32bf09b64326cceb7290d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a678ece0b6b02cacd216114db06a73c5d92cf1de604f5a774cf1d3601cfc6d87952cf1d1ce89e7ceeb0d9a8d31c8bee5206f7afcd0eea69db77647e336c87a6cebc2e07997d6c6487d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f1ccd579614d40b9b9248c62dbe89627f9dd83b941fd295dbf9dcdc0b3c9813e8eea99ecb7b3c5a8d35c8bee5206f7af2d0eea69db77647e0b6c07cfec996dcc8a679ece0b6b02cacd236114db26b73cc9766c5e507f4ad78e6d011e17edbca37a26dbb1ad469de65974973218ab5b1dd4d3b6efc8fc56d80e9ed933db9815cf7c9d17d604949b4fc228b6cd6e7992edd8fca0fe94ae1ddb0a3c2eda7947f54cb663db8c3acdb7e82e653056b739a8a76ddf91f96db01d3cb367b6312b9e053a2fac0928b78084516c5bdcf29425a0ce32a56bc7b6018f8b76de513d93edd876a34e0b2cba4b198cd5ed0eea69db77647e3b6c875c63563c0b755e5813506e2109a3d8b6bae549ee5f0b83fa53bafd6b3bf0b8687f1cd533b97fbd63d469a145772983b1fa8e837adaf61d997f07b643ae312b9e453a2fac0928b78884516cdbdcf224f7af4541fd29ddfef50ef0b8687f1cd533b97fed30eab4c8a2bb94c158dde1a09eb67d47e677c076c83566c5b358e7853501e51693308a0d8f178b1df1141b3cc5162d8e946f35df5be78bf46f02fedf1b185db5878b0d4699c718475ed79ab536785a1b9a1d49dfaafe153a7facfec5ed55018c0cdbab7516346b63f0b431343b92be95167d74fe38fd8bdbab0f30326caf36c0e3a07d2e4f183c6a4a77beb1c3b13e8eea993cdfd819d875c7e39094c163f74e07f5b49d4bc8fc4ed80e9ed933db9815cf009d17d604941b40c22836bc4ed9153f4f79c2e05153ba766c97637d1cd533d98ebd1bd875df05ba4b198cd5771dd4b300fccaba65fe5dd80e9930afcb4166af73e39815cf409d17d604941b48c228b69dc0f35efc3ce50983474de9dab1f71cebe3a89ec9766c7760d7fd3dd05dcae0feb5db413d0bc0afac5be677c376c884795d0e327b9d1bc7ac7806e9bcb026a0dc201246b1bd0b3c7b62e7498d07843c6a4ad78eed71ac8f9b7aa6dab1f703bbee7b40772983fbd7fb0eea59007e65dd32ff3e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a67b0ce0b6b02ca0d266114db6ee0f920769ed47307e45153bae70e1f38d6c74d3d53cf1df60676dd3f00dda50cc6ea5e07f52c00bfb26e99df0bdbc1337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d3337b3e219a2f3c29a8072434818c5f63ef07c183f4f79c2e05153bae70e1f3ad6c7513d93cf1df60576dd3f04dda50cc6ea3e07f52c00bfb26e99df07db619f67f6cc1666c53354e7853501e58692308a6d2ff0ec8f9d27f5fc1479d494ae1ddbef581f37f54cb5630702bbeefb41772983b17ac0413d0bc0afac5be60fc076c884795d0e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d8f601cf47b1f374294d183c6a2a30e62b21ff91637ddcd433f5dce16060d7fd23d05dcae0fe75d0413d0bc0afac5be60fc27668eacceb7290d9c74676987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308aed00f07c1c3f4f79c2e0515381315f09f98f1debe3a89ec97e3b9f0476dd3f06dda50cee5f9f38a86701f89575cbfc27b01d3cb367b6312b9e1a9d17d60494ab216114db41e0f9347e9eb284c1a3a674edd8a78ef57154cf643bf65960d7fd53d05dca60ac7ee6a09e05e057d62df39fc176c83566c5334ae7853501e54691308aed13e0711077499e628347e63f25f0ade66b75be48ffe2f6aa054686ed559c05cd5a1b3cad0dcd8ea46f55fff13a7facfec5ed351e1819b657eb2c68d6c6e069636876247d2b2d26e8fc71fa17b7d7046064d85e6db2a0d9916c0f8fe4be7d24e3d46b7ee4342f38829a171c41cd0bbce6549a3b38be94e1b12c00069c2a21ff19f07c3b7e9ee47db9cf32e0f936f07c2b7e9ece8eea59aad6fb1d608f6bbd4aabef1a5a7d6668550c6590e1bb0ef42b00bfb26e99177f9ed9334731e3b9adb026a0dca7248c62fb16f0b8683754dd3be875c9fa5b84e9cb13ebfcba785e82f78a5be8f50a87f82b8432d34aeacafe59b315c1ff65bba9fa1c346c8ede61ee6c7b6e27f3e2af28c8dabddbb4f792510b17cf9b323dee1fb4f07c1d1f4f29eee7e8eb80a3ba67f2ecef808527c6ba778e7aeeb93ffeba27db8f8e7a5db27eb58ffed7894e352fc77d4fda8f8e469d0ba1cc8092bab25f43fb616b2b5cef9b724e6eee9bcd82baf64cb84ab4dd7c26f4b5b64bb98fa13cb639bdf52fee9fbda1aeaedac5a87b4cd82e9a6db74bedcde792a6ef62d0e56352cd6ccf2950c70a0b77050137c66336f73359b7ed195985a1239b66b8ad3fb6e8d8c7c2dd87809b71bfee63e8c8a6d9e1f6eb0116ee0104dc8cfbf500434736cd0eb75f0fb4700f24e066dcaf071a3ab26976b8fd7a90857b100137e37e3dc8d0914db3c3edd7832ddc8309b819f7ebc1868e6c9a1d6ebf1e62e11e42c0cdb85f0f317464d3ec70fbf5500bf750026ec6fd7a68505f4736cd0eb75f5759b8ab08b819f7eb2a434736cd0eb75f575bb8ab09b819f7eb6a434736cd0eb75fd758b86b08b819f7eb1a434736cd0eb75f8fb2708f22e066dcaf1bda6f9f75bfaeb570d7127033eed7b5868e6c9a1d6ebf1e6fe11e4fc0cdb85f8f377464d3ec70fbf5040bf704026ec6fd7a82a1239b66b6fddad1bb8419bfdbf889537d52634c7f9201cf47c0e322a61cc541a9a37e2ec9bea9fb0dad3e31b4c2b13b0e807e0efac2a4fd2681f8f3cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccf8cdf65c4e72b52ee631246b1e1332917f7f955dd3be975c9fa5b8469c0c9757e0fc4eeb7acb4c0f057091ce2af10ca9c7b4e5dd9bb355b5170e876c3b1b8715bee8bbd0ea96d69c6bfcc8bbf22a8cf7ee071f07e7e92e780c173c0a205be771a8fefb2e16e342e2b55dfc73b3aa8dbcefb8cfaa0a61fc6eebfbea60586a61f3af69d08ea6f4f61c0a912f2c8e3e2d9b0a37a26db82bd469d4c8d8ba14c3ba8e75e07f52c00bfb26e99df0b3c32e13379573118183c81451f999a91f15493f10c24e3399f8ce77a329e53c978fa91f13c44c6d3838ce768329e31643cf791f1dc46c6730e19cf55643cd93807cf84e771329ece643c2790f14c22e32924e3a921e33948c633888ce742329e1bc9782e25e3399d8ca73f19cf74329e6e643c1dc87812643ce3c8788691f1dc41c6534ac6d3968ce71a329e93c8782ac8783a92f14c21e36949c6338a8ce762329ec1643c1791f1dc4cc6732619cfe5643c8f90f19493f11c4bc6d39a8c673c19cf70329e3bc978ce23e3b98e8ce714329ebe643c53c9787a92f1b422e3b99f8c670819cfad643c6793f15c49c6730919cf63643c65643cc793f14c24e3694ec633828ce76e329ef6643c1790f1dc40c6731a194f2519cf34329eee643cc790f18c25e3194ac6733b194f0919cfd5643c4f90f1f426e339918c6732194f0b329e91643cf790f1b423e3b9898ce70c329ecbc8781e26e3e94ac65344c6534cc6534bc65345c633808ce75c329e6bc9784e26e3e943c6f320194f2f329ea3c8784693f1dc4bc6730b19cf59643c5790f17422e3398e8ca70d19cfa3643c5dc8780a087812c1a1df624ac0ff0f804dbe19f411d89a59d627cf61a5bc3a2eae6d7be8ba9b59d6fda1850175fa00ea52a9f3a5df6c4aea84be2a615efc1501c787243c5dc8781e25e36943c6731c194f27329e2bc878ce22e3b9858ce75e329ed1643c4791f1f422e379908ca70f19cfc9643cd792f19c4bc633808ca78a8ca7968ca7988ca7888ca72b19cfc3643c9791f19c41c67313194f3b329e7bc8784692f1b420e3994cc67322194f6f329e27c878ae26e32921e3b99d8c672819cf58329e63c878ba93f14c23e3a924e3398d8ce706329e0bc878da93f1dc4dc633828ca73919cf44329ee3c978cac8781e23e3b9848ce74a329eb3c9786e25e31942c6733f194f2b329e9e643c53c978fa92f19c42c6731d19cf79643c7792f10c27e3194fc6d39a8ce758329e72329e47c8782e27e339938ce766329e8bc8780693f15c4cc6338a8ca72519cf14329e8e643c15643c2791f15c43c6d3968ca7948ce70e329e61643ce3c87812643c1dc878ba91f14c27e3e94fc6733a19cfa5643c3792f15c48c633888ce720194f0d194f2119cf24329e13c8783a93f13c4ec6b39f8ce72a329e73c8786e23e3b98f8c670c19cfd1643c3dc8781e22e3e947c6732a19cff5643ce793f10c24e3a926e36946c633c1e0c1ffab77c3e4fc48be1d5408ff9fae3b97b7d6eb9232f28e92bad7f5be6153f5dde3a8beef07755325ccef81fa0afbfbc0f3be239e0f0c1ed37711e42b40b3dd864d31bee78871b7c128f3ef01a3e8b71b78763be2d963f098be8b20df07347bd7b029c65d8e18df3518657e17308a7eef02cfbb8e78de33784cdf45901f009aed346c8a718723c69d06a3ccef0046d16f27f0ec74c4b3cbe0317d17417e2068f68e61538cdb1d31be6330cafc766014fdde019e771cf1ec30784cdf45901f049a6d336c8a71ab23c66d06a3cc6f0546d16f1bf06c73c4b3dde0317d17417e3068b6c5b029c6cd8e18b7188c32bf191845bf2dc0b3c511cf5683c7f45d04f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37711e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf4590af02cdd61936c5b8d611e33a8351e6d702a3e8b70e78d639e2596ff098be8b205f0d9aad316c8a71b523c63506a3ccaf0646d16f0df0ac71c4b3d6e0317d1741be06347bdbb029c6558e18df3618657e15308a7e6f03cfdb8e78561b3ca6ef22c88f02cd561a36c5b8c211e34a8351e65700a3e8b71278563ae25965f098be8b205f0b9a2d376c8a719923c6e506a3cc2f0346d16f39f02c77c4b3c2e0317d17417e3c68f69661538c4b1d31be6530cafc526014fdde029eb71cf12c33784cdf45909f009a2d316c8af14d478c4b0c46997f131845bf25c0b3c411cf5283c7f45d04f9dbc126bcbdc0f686cef704dbeb3adf036cafe97c77b0bdaaf3ddc0f68ace7705dbcb3a5f0eb69774be0bd85ed4f932b0bda0f39dc1f6bccef705db733adf0f6c8b75be126c8b74be3fd816eafc65605ba0f397836dbece5f01b6793a7f25d8e6eafc55609ba3f357836db6ce5f03b6593a7f2dd866eafc75609ba1f3d783ed599dbf016ccfe8fc8d607b5ae76f02db533a7f33d89ed4f95bc0f680cedf0ab6bb74fe36b07da2f37780ed539dbf136c9fe9fcdd60fb96cedf03b66febfcbd60fb8ecedf07b6efeafc30b07d4fe78783edfb3a3f026c3fd0f99160fba1ce8f06db8f74fe7eb0fd58e7c780ed273a3f166c3fd5f97160fb99ce4f04dbcf757e12d87ea1f393c1f64b9d9f02b65fe9fc8360fbb5ce4f05db6f74fe21b0fd56e7a781ed773a3f1d6cbfd7f987c1f6079d7f046c9febfca360fb42e71f03db973aff38d8fea8f34f80ed4f3a8f63ddfe59e74b8278dbd9af82baa9047c8b3f55e62f3adfd22823cb1642998eba83a37ac6a1be652aedb0b4cbca26edf01b609376f875b0493bfc1ad8a41d7e156cd20ebf023669875f069bb4c32f814ddae117c126edf00b609376f879b0493bfc1cd82a757e31d8a41d5e0436698717824ddae105609376783ed8a41d9e07366987e7824ddae1396093767836d8a41d9e0536698767824ddae119609376f859b0493bfc0cd8a41d7e1a6cd20e3f053669879f049bb4c30f804ddae1bbc026fbcb576093b6f913b049dbfc29d8a46dfe0c6cd2367f0b6cd2367f1b6cd2367f076cd2367f176cd2367f0f6cd2367f1f6cd236ff006cd236ff106cd236ff086cd236ff186c6375fe276093b6f9a76093b6f9676093b6f9e76093b6f9176093b6f9976093b6f9576093b6f9d76093b6f9376093b6f9b76093b6f9776093b6f9f76093b6f90f6093b6f973b049dbfc05d8a46dfe126c4fe8bcb4d5adc026cf8ad554fa0d271c8707cff985a93288b7edc7a912f28f43dd656a46c6f31c194f3519cf40329ef3c9784e25e3b98b8ce768329eb9643c2f93f1e0b18981671d19cf5a329e9d643c3bc878ce21e3d94fc67302194f2119cf22329e1a329e37c8780e92f10c22e3b9908ce752329ed3c9783e21e3e940c69320e379918c673619cf1a329ed5643cef90f16c27e32925e3694bc67312194f05194f47329e96643c0bc8784691f1bc46c6733119cf60329e8bc878ce24e339968ca73519cf4c329ef1643ccf93f1bc4dc6b38a8c671b19cf56329ef3c878f692f17c40c6730a194f2b329e79643caf90f10c21e3399b8c670919cf25643cc793f13427e3594cc6b3928c670519cf9b643c5bc8783693f1b427e3b9808ce77d329e3d643ca791f11c43c633878ce725329ea1643c25643cbdc9784e24e36941c6b3908c673919cf32329ed7c9783691f16c24e3f98a8c673719cf7b643c6790f11491f11493f1cc22e3a925e379818ca78a8c670019cfb9643c2793f1f421e3398a8c673e19cf5b643c4bc9785e25e3d940c6b39e8ce75d329e5d643c6791f17422e3398e8ca70d19cf0c329e02029e0470046093ff3707db973a7f106cf2bd9efd60fb42e79780ed739d7f026c8f5a6ccd2c7cc2f025d8e4dde6c7c026f73fbf009bbc13f039d8e4bc4afcabf9ad6d0fe56f06cb889fe6167ef4f7b9854bf2b8bd6599ca20deed8dbe2a8343bfa754041c8f91f0cc20e36943c6731c194f27329eb3c8787691f1bc4bc6b39e8c670319cfab643c4bc978de22e3994fc67314194f1f329e93c978ce25e31940c65345c6f302194f2d19cf2c329e62329e22329e33c878de23e3d94dc6f31519cf46329e4d643caf93f12c23e3594ec6b3908ca70519cf89643cbdc9784ac8788692f1bc44c633878ce718329ed3c878f690f1bc4fc67301194f7b329ecd643c5bc878de24e35941c6b3928c6731194f73329ee3c9782e21e35942c6733619cf10329e57c878e691f1b422e339858ce703329ebd643ce791f16c25e3d946c6b38a8ce76d329ee7c978c693f1cc24e3694dc6732c19cf99643c1791f10c26e3b9988ce735329e51643c0bc8785a92f17424e3a920e339898ca72d194f2919cf76329e77c8785693f1ac21e3994dc6f322194f828ca70319cf27643ca793f15c4ac6732119cf20329e83643c6f90f1d490f12c22e32924e339818c673f19cf39643c3bc8787692f1ac25e35947c6f347329e97c978e692f11c4dc6731719cfa9643ce793f10c24e3a926e3798e8ca71919cf040bcf12473cd27745d62df34b9ab8ef3d86ef3d79e2fb3dc3f77b79e27b97e17b579ef8de61f8de9127beb71bbeb7e789efad86efad79e27bb3e17b739ef8de68f8de9827bed71bbed7e789efb586efb579e27bb5e17b759ef85e65f85e9527be5718be57e489ef6586ef6579e27ba9e17b699ef866befe56df79926f41ecd5bf09f83f8e1fb7df11e3128351e6f703a3d870fcf7de8e78a2aedd7b13f8565a48df4579873e01ffaf00465731d5db6094795b4ce178a3158e78a2ee395410f8565ac8b71ce59b5809f83f8e9fe22aa62a0c4699b7c5148effd5c7114fd4bd923e04be9516f22d47f9067002fe8fe313b98aa93e06a3ccdb620ac79b18e08827ea1ecf0002df4a0b791623cfcc13f0ff81c0e82aa606188c326f8ba91dc033d0114fd4bda98104be9516d2f74cfa2c27e0ff8380d1554c0d341865de1653db816790239ea87b6a83087c2b2de4dd2879873501ff1f0c8cae626a90c128f3b698da0a3c831df144dd0b1c4ce05b693144e7e51b3909f8ff1060741553830d4699b7c5d466e019e28827ea1ee61002df4a8ba13a2fdfe04cc0ff8702a3ab981a6230cabc2da6703cdfa18e78a2eebd0e25f0adb4a8d2f90dfa3701ffaf0246573135d46094795b4ce1786d558e78a2ee195711f8565a48df18e9339880ff5703e350478c5506a3cc0f0546b1ad059e6a473c51f7baab097c2b2da4affb1afd9b80ffd700a3ab98aa361865de1653ab81a7c6114fd43dfa1a02df4a8b513a2fdff048c0ff4701a3ab98aa311865de1653ab806794239ea8670ba3087c2b2d64ec03f9265f02fe8fe365bb8aa95106a3ccdb626a05f0d43ae25966f02cb36871a47c2b2de4db2fcbf56f02fe3f1e185dc554adc128f3b6985a063ce31df1443dcb194fe05b69217d3bdfd2bf09f8ff0460741553e30d4699b7c5148ebf3cc1114fd433a80959f01df53c251bbea39e0d64c377d47dee6cf88eba679b0ddf51f71fb3e13bea5e5a367c47dd17ca86efa87b1cd9f01d75bd9e0ddf51d79ed9f01d751d950ddf51d704d9f01d757e9b0ddf51e76ad9f01d75dee1db73df9ec7edfb489e3be46b7b7e248fa147f258e2af0dfcb541b67cfb6389bf36c896ef7cbd36f0ed79f6db73b9fe2a08a2afc75639f2bdc2f02df3f89c658523dfcb0cdf328fcf0c9639f2bdd4f02df378ff7ba923dfc5866f995f9a05dfad0ddfadb3e8bb8de1bb8dc5b783ed5d9608ea5f7f0b034e9590c71878cb81168eea59aad6bb5cafebeb18d76bbb6f63ee2fc5506639e8e7baed90759b6d472e32635c14c4e7bb34013e649c3b6593e7c76f804ddafdd7c126fd025e039b1c9b5e059b3c937a056cf2ccea65b08dd2f94fc026cf8eb1cfbe3cffdf05b62a9dc7bee243757e07d8a42f15f65196fe70dbc1267d1ab16facf44bdd0a36e95b8c7d32a57ff866b0491f7fec0b28ef696c049bbc6b837dd0f6ebfc7ab0c97735b1efd3173abf166c5feafc1ab03daef3abc1f688cedf05b63fe8fc57607b58e79782edf73aff16d8a6ebfc72b0fd4ee75f02db6f75fe45b04dd3f917c0f690cee3bb6cbfd1f90fc03655e7f11daa5febfc1eb03da8f3f8eeceaf74fe3db0fd52e79f07db149d7f0e6c93757e31d87ea1f38bc03649e71782ede73abf006c13757e3ed87ea6f3f3c0f6539d9f0bb6713a3f076c3fd1f9d9601babf3b3c03646e76782edc73a3f036cf7ebfc1fc1f6239d5f06b6663abf026c322622f65391ef7cae029b8cf58dfd8f64fc8309603b4ae7c783ad95ced7824dbe0d370a6c32be700dd8123a5f0db6229daf029b9c9f0d059b8c0f33046c722e35186cc7e9fc20b0c979cf40b0c9788d03c026df20ed03361987bc026c32f6406fb09dacf34bc02663b2ed079b7c27ee20d864ece32fc026df87fe126c67e8fce36093716a1e01db593aff07b09dadf30f834dbe29fa7bb095e8fc74b0b5d5f9df81ed5c9dff2dd8644cb3696093efd03d0436193bf8376093ef3d4f055b3b9dff35d82ed2f907c12663bffc0a6c32fee52fc1d65ee7a7804dbe7b3d196c1d74fe176093f1382681ad93ceff1c6c32eec244b075d6f99f81ad4ce77f0ab62e3a3f0e6ce53aff13b075d5f9b160eba6f363c0d65de77f0cb61e3a7f3fd87aeabcb4336a7f56fbf9013d5f19c4775ea6fc7d14d49fd25d1b0803f2c479ae5d0c3ce86b5fec752f4b9ed74b5bd04caf5762681ff8de1bbbefd435c5877a5d857abd7b0ddf8550a654370e6a3939e637d7cbed3796c3fb58b26e59a613d83f30d6dd5ad7f74347f5dd6b300937ea2065ca35933a36fe42e71dbdc39fbc3e96580b40439c2a212f0c6eb42a2bc573e186f07c083cfb62e7495dafbb8809dcb7e2be5e37efe39ab1560c65f6827e1f38d00ff77559b7cc8b3fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ae780cee3b36629778084516cfb80c7c57d7e7c0e2beb57cf753e3ea7ceefbed8fdd67fbed742afb7d4a873219469595257f65b9a0dc71e95ed16b52d1d3c274cbb2dc55f11d4079f051d70c4b3cfe0d967d142f225b1f92e1bee46e3b252d597453d63df6fe87ac0a2a9abfd759f5e5781a129eeaf1f193cf86cb408783fd6bf0958cfc7500707fb78dab8107fb82fed039be43f024617db198f25d21ec8f3707c362d65be309e8bc7bfedcb4a5db61bef439d2a8343e3bb10cafc199eb7ff55e7b16fc801d0ed7f5bfe2f53bae7d4a29faaf3eef8eb9cdcbeef016725f841dfef026b4cbeebbd4353a093f8117b21e4ff17f4e79072a287682dec6a1f913e9dc86e2ef791b15c3194d963a97f65106ffd771b3cbb0d66b54dfe0171f6bfe1f8efaa4dda13a15127d048caec038df63be2d967f00887f8536564fbb734cac8b28550e6bfa18d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf81870721defbed87973abff57eb92d42fb6eb71f5ff9275b7d6cb0a4760acbf14d62f5c2d83e8638b9439a1a46efd2efb97ed37ea2c2ca8b39439a524f5abe2ec269dcfe45cff485db7459debef71c09308ea5f7bab29ddf11d8f31ef3be07154cf52dbb1eb03a34ec550a61dd4d3c1794cda778177836f17db1cb59073a8bd86168550e6e292d4afb41d513ae2b5ea8759a94b99f57cb0d4521729d3a9a4ae2eadc01e2793cbedf62ed449ad779fa5ae52a6bca44e976e3a9f80ed84f74daeb4fc5fa674ed018ec5b333fe3a27b7ef0ee0ac043fe8fb1d608dc977bd6f81c8f9bef8117b21e4af28a92b2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3cb52ffca20defaef3478761acc6a9bf42ca9cb4b1cb96c37774568540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452e6f692d4af6a671396b2e6bd6117f731f1ddd200ea111875950963c0c1b561395e3b493b257e3a827d9fce8bce1d0ded0aa1ccbd25a95f87e7ddd67b97e6f51d5e5308b7b96fe1bb1f552575dc2aee653bedd3bf4560fb54ff3aba4e2bb7dd33140edb3dc3512575ecb8ac707d62a98b798ddc2c38f49efad74659bcef966e39f4a5a683c6324adf4f2d4cfb0c3fad60d9d8ded5e85c5a1ac57f10f83e32986dbaca7e8031b74fe7cd7d05af8da5ccd492d4afb4496659b5edffebc43a7d643b8a76d89e604c7e048c953a5ffacda6e43e77d0a8bfcc8b3fc528f77b0e024ffc6d57ea7da54cee03ef071e176dbba336ba148fb1ad625b6fcf2adbf1ff2343ab2c3eafb51ef3cd67eead8c7c3cbecbaa6df79f6c5aecb5f0b87a8e12a5c55e8beff8b4e836dcd6ced9b4c866df87282d3eb0f88e518b1abcef994e8bf72d3c2eee45a5d3e27d8beff8b4e85e9aeeb9066ab1c7c2e3eade439416e22f53e60f08985b19f9787c9757d9ee93d9b4d86de17175dd1ca5c56e8beff8b4e8dc0defd1a5d3e23d0b4ffcf7e7d26bf19ec5777c5af4e889f7f0d269f1ae85c7d533dd282ddeb5f88e312e46d8eee5d8b4d865e1d995652d76597cc7787ed8cd76afcda6c54e0b8f83fbae69b5d869f11da316c3f0be6b3a2d7658787664598b1d16dff16951d5d5764fd8a6c53b161e57f784a3b478c7e23b3e2d86f550beb737408bed169eed59d662bbc5778cd750c9b8d8d6002db65978b665598b6d16dff169519d3cd7dada002db65a78b666598bad16dff169519a3ca66e6980165b2c3c5bb2acc5168bef18e322793db9b9015a6cb6f06cceb2169b2dbe633c8e24e3625303b4d864e1d994652d36597cc7a7454df2fed3c60668b1d1c2b331cb5a6cb4f88ef19e4b322e3634408b0d169e0d59d66283c5777c5a74491e53d737408bf5169ef559d662bdc5777c5a8c483e135bd7002dd65978d665598b7516df319e7726db8bb50dd062ad85676d96b5586bf11de37967f2fec59a0668b1c6c2b326cb5aacb1f88eb1ed4c9e77ae6e8016ab2d3cabb3acc56a8bef18cf3b935abcdd002ddeb6f0bc9d652ddeb6f88ef1bc33791c59d5002d5659785c8d8112a5c52a8bef18e322d976ae6c80162b2d3c2bb3acc54a8bef18ef6b25dbce150dd0628585c7d5780d515aacb0f88ef17a24798f6f7903b4586ee1599e652d965b7cc7f8ac28790ebeac015a2cb3f02ccbb216cbc0f7fed87da7fa738b0fe98bd5c1d0a210ca5cd836f52b7db1a274947560bf32accb5bb1d725d5af6c69445dde82ba48994ba12ead02276314953baa6b326696409dd47a3fb6d455ca746e5ba74b179d4fc036f90474bbccf27f990a8cf94ac88b7eaace6fc45fe764acbe0e9c95e0077dbf06ac31f9ee8cbe0b74123f622f847cffb67565a59ce8215a0bbbda47ded4796437975b662c570c65deb4d4bf3288b7fe6f183c6f18ccc9f71e20ce248edcb45d29a6372334ea001a4919ecb3f7b1231eb30fa170883f5546b67f4ba38c2c5b0865ae83360afb954a3d13c1a1fd261db5659d915dd62df3e2af186cfb81d1aca38a8f2fa1efa78c1521e348289b8c0bd105d6d3ddb0a9baf6705457f125eb96f91ec028e35474cf3e63594319bb198c8aa79703cd70ec0d99d21d2f7a014f4f073c8eea993c0ef536ead4c3a8533194c1771b7b3ba86701f89575cb7c6ff0ed629ba316724cbed8d0a210ca8c32ce1fa3749475a8f8ed6ea94b5fc77591754bbbd4370bbe2b0cdf5d0ddf89a0fe760e82f4fb570530f771c0acd6db2ffef596e2799bc494f8e90a75ea0f1ac455275c979ce7f537b42d84fca3709e27e5a4ac1cbf845dc5b26c4b643797eb652c570c65fa5aea5f19c45bff7e064f3f83596d9389706ee7607f48c6405f8343e6bb8276fd22b4eb0bda49193cfe7577a45d1f83a78fe15bf1c8394e6fb0c9b982f027e0ff5db2c06db67bbd2ddc62c371e26ce73adde2674c7baed30d18c5d607782a1c69666eeb8b0d7df0b8dcd22823cb164299e7e0d898b09455fb5dbb82ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6382bab11a274dae9d386ce488db46a41e3d0a5aa18189bf05966a34031be69b5b6c41507f48ca42b0c990942dc0d6cc900587c294f232a49d0bb9500f5977a1c1d90a58e2f48dc379ca942e748e021e17a1ac424786f4d4a173d7c4d19347607cb430381b133bea7fcdd3948b5a97abed60ee1395306fc660a123ffcda1be95302ffed4b629d6f9f1c3863fd07fe2c82963478c9b3c098532776ccc1704f53780f91b25b8ab9d0e03002b8c8d430ba35ed860c8ff64c31c133f67398e996b6a13803f998e01dd8e76a09b5abf8c7d3b7cd89831b74ca91a337af85553c60d9f3cba761c6ecd568672515b5afedf126cb6261ecbaa099b2d5cf6288bcd36e128c3adc02647aea3c1263cc780ad39e4a5bcb9659c846b3b58bfec52ea7f4a9c16bae247057521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e3d480d1dac860a3e2b480d05acbe765112a486f63d37480ddd7b7e901a9af742e0fb36305f14a44ebbd4d0baed83d4d0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a49fd6ba7f982e0bd3e561ba224c5786e9aa305d1da66bc2746d98ae0bd3f561ba214c3786e9a630dd1ca65bc2746b986e0bd3ed61ba23480def7c67901a7e5d0dff7c77901a1afa9e20356cf4bd416a48e9fb82d470d3c382d450d4c383d430d52382d410d62383d4f0d6a383d4d0b90f04a9a176c706a9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f2f420350cb31ab2f9d1303d16a486747e224c4f86e9a9303d1da667c2f46c901a1e5c0d1b3e2b480d33ae861f9f1ba4862b9f1fa4863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f394caf84e9d520f548423d8a518f28d4ed7ff5184cdda27e2b48dd3a5f1ea41e71ab47feaa0b84ea12a2bac8ac09525da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aaf705a9dbe20782d4a352753b5c3d1a50b7ccd5edfbcfc2f4ad201593df09d377c3f4bd307d3f4c3f08d30f83d410c66ab863355cb21a5a590db9ac8667564339aba1a0d510d1bf0e52434faba1ab7f17a486bffe43983e0f5243707f19a4865fff5398be0ad39fc3f49730fd354c7f0bd3dfc3f48f30fd4b98fe354cff16a67f0fd33f83ba61b6b121395db73efa0a26183679f288b1e327974cae2d193b65cce4d1e3c74c2b993a7af2a892da07474cac19533b1517feb65e58c608ef3f71e2b06925a3c7558f78a8a476cae492da9a92aada29e3aaeb1dc4ffaa173af3508fc3aaaba39dfdc73721fdbf8d747ab46e1765f4f56bd3d7ada879230439be310b756bdeb80a4dd74730b9d4bd3d751e5c32694cede492d29271e1dff0c05b3b754475c712fcdfa450e449934b264d1e36717249cdc4dab1259d3be27a671cd3884a1424dcc07438bd71e274d2df596a54887d7e4e2314f8fa9cc6911e5bf20d488f2f699cd38b4a1a51c38e8d59e8b646120e2e899465d294aac913870d9f1cbdf0b06fb2f0c8c654f3c14656f382b68d70d6be310b5ddbb67184231be36c7106ce82ff0f62e9a0d2d45606009b2d6c6f000000284a1f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433828b4506139833654ab272204882222d92a04828599625599273ced9723acb39e7b32eda77e73bdf39ca3947c9e9feb9f3bdbbf7fcae7bb6cbf8d09c5963a129b0065bf35e717b0abd53bffea6ba67b67b7699098adb1f8c655cb9dad845c1b91bfdbdcfbde69fdcd69ae0b1f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82915bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413ac6a8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d8a7b5de65e97bbd715ee95deb3cabdae766dac71fb2dc6d6583663addedf0ac6da8cb51bebf0fed669accb58b7b11ef7b766f7b75e636b8dad33b6ded806631b9d0e9b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1a71a3b60ec3263971bbbc2d8d38c5d69ec2a63571bbbc663b9d6d875c6ae377683b11b8ddd64eca0b17e63878c1d3676c4d880b1a3c66e3676ccd871634f37768bb113c64e1a3b656cd0d86963b71a3b63ecacb12163b719bbddd81dc6ee347697a7d9338cdd6dec99c6eef1389f65ec5e63f719bbdfd8b38d3d60ec41630f197b8eb1e71a7b9eb1e71b7b81b1171a7b91b1171b7b89b1971a7b99b1971b7b85b1571a7b95b1571b7b8db1d71a7b9db1d71b7b83b1371a7b93b1373b16ea086f31f656630f1b7b9bb1b71b7b87b1771a7b97b1bf32f66e638f187b8fb1f71a7b9fb1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1bf36f679638f1afb1b637f6becef8cfdbdb17f30f68fc6be60ec8bc6fec9d83f1bfb17635f32f6afc6fecdd8973dcdffddd87f18fb8ab1af3adfd7dcebd75d5d9a17fb86b16fbaf263eef55beef5dbeef53bde7bbe6bec7b9eeffbc67ee0f97e68ec47aefc63f7fa13f7fa53f7fa33f7fa73f7fa0bf7fa4bf7fa2bf7fa6bf7fab87b7dc2bdfec6bdfed6bdfecebdfedebdda35d5ab9b8ae5c9c1f0d617243446b51fcddb3515127f693072b35a54bbbfd16bb3f3d7b87d7a25ed6add7eade7af73fb75de7126bbfdc99ebfd1ed377afe996e7fa6e76f72fb4d9e7f8edb9fe3f92f76fb17833f1bc09cabf35b5fb57365c047f95a05be5ae7ab065f1d1d0e7c939caf167c747eebc037c5f926816faaf34d065fd6f9a69096c6ea9daf2f482a57f2fdf6b8b9a48febd6a1a625cf7bd81eb78189777af2bc03f6b88d0cbc363f66b8634d87bc99e97c8de09be57c33c0e786a03ff739eb9bed7cb3c037c7f99ac037d7f966836f9ef3cd01df7ce79b0bbe05ce370f7c0b9d6f3ef81639df02f02d76be85e05be27c8bc0d7ec7c8bc17781f32d01df85ced70c3e7ac6e502f05dec7c1782ef12e7bb087c34d65e0c3eba37bcc4f9ec38313903ef717e1aa3c2f7d0f80cbe653436836f398dcbe05b416332f856426cf2ad8271857cab9d8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282cf06b562ec8c338a43fe1a28ef82ba548ff4a0eb0cb1dbebc93a57de58e27dbddefb7250675d44fbfb8264dbbfdee359ef31d742fb7972b6ada0393beaadec9cbd0aeafab947f73c133167f7020743ce766ace8e7a2b3b6707a0ae9f7b74df3b1173f65ae060c8d97e9e9c2de435678b736441109d7bf4d96722e6ec31e0483e673b346747bf959db3f7435d3ff7e8f3ef44ccd9db8123f99cedead77b83516f65e7ec4ba1ae9f7b3417331173f641e060c8d9011d6747bd959db36f86ba7eeed1bce044ccd9570047f239dbc394b36d9ab34171bd3308a2738fe6a82762ce3e0c1cc9e7ec619d9f1dfd5676ce7e06eafab947eb251331673fe8ca769de16b6e9d6121f8beee7c8b8037f9dc3ed2ce94db05cdede2732041109da3b476371173fb5157b679fc183c7b40be6f39df05e0fbb6f35d08beef38df45d02e863ed0af7d60d45bd97de07b50d7cf655a479e887de02bc0c190b387356747bd959db38f435d3ff7e899868998b33f040e869c1dd09c1df55676cefe11eafab9b7cc952762ced273a5f67ee1c7ee7e6105f87ee27c2bc1f753e75b05be9f39df6af0fddcf95ac0f70be75b03be5f3a5f1e7cbf72be56f0fddaf90ae07bdcf9dac0f784f3b583ef37ced701bedf3a5f27f87ee77c5de0fbbdf37583ef0fced7e37c76bd8b9ebdfa92f3d9734b1af505c99e5b7ac6928e4dfbabc621768317bb611c63377ab11b2362af66889d8518b465bcfd3e28afe6e5c9e78291dfffa0586b928fd566dbde128cbeed6b8027cfd0f62cc4180d4f1e785a93e7099ff52d247fdcf01cb7789a6621560bb4ab8da15d198845c7a67d8a97031f8edf6d118cedc9331632108b8e4dfbedc0483ebc9ed0759dfa8fbd1e2ecd0cf332f4a5f09e88e2d16f7f11c71af0539dff9e35ccb6c2b1d5c3dff1dadaeaf998f232cc0b8a45c7a67d8a570fed691d7fc6c26819f31e23d718918158746c3f36f6f7d5e3afd9a8ce6b0e7ce7614c2a8c754caa07b6f1b84f893bd75262735caf321083c636d2bc007eaa33db7d21c18e6d3b60dc65e87f8572efdf703c483e8f0b79ecd7a3e169031e8ebecfd45ff378ddff53906cae75785ab57a5ae5a04e3be8d7c1a05fa9fb108aa7cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccf299f1f90b5cdfa47aab843092af003c1cf3fce1ef47b963d1f1edbaceb7615d27f9758b421ed72ce919c3e55e9b6ba0ce1399e1badf87f5747f6d10d73457f16a37aae72cea8373d76239d710e3d681a3d62f9b138b5d38ccb5de667f43c5fe0e598ba7ebaa084d199e5319a169c6d3149f535ce9f1d83c9d573dccc6b1f657ee5a246a45e524d7f6f01903def3521c3f2817aa8291e3075e673a138f3d720d93d6cb3bbdd83550e77f32c3e7869e45a5ffe7d07fe6c9d6e9f28e4def590efe2eefd80deebdc451eb1dbf05de4b75fe0fc6d4b754057fd68ce3f90f1c9703682b6e7d50c675f3e4afc3c575fcb632783a8087639c61badfc8631f487a1dbfcbd32aea3e86ea74827e5d0cfa45dd8bd23ec55366655666655666655666655666655666655666655666655666655666655666f9ccf85d5162cd42bd8210c6717af6215ccfa0df7fa1e3db759d17550dc7e55e87a335a7155e9b6ba0ce97ab86ebbecc95eb83739f77883b970ceb7925cf25c5ab87f6e05a10d7f7b9db3d9ef6082da8dc9c58ece23a7ef21a0fafe3b779ba162234e5eaafb8c68a9a627f6df578706db43e38f7d9922c1c673c9e1d8acb0b8a877da91d7c54c6ef47739c67bc96f8cff5503c5cbf7ec469db10709dfb429e73dce88636f505e7e6770dd4f9008c7d1f72657c86039f1d7934e2efb4955aa726fd587ecb2e5f5cf75d0b9c7d100763af03d68462b762ec8c338a43fe1a287fbe6ab82ed5233d486b62b77d847e130cd9fdf7b57aefcb419d9e88f6f705c9b6bfd7e3e9f598ed39f928e4d9a370fde71a937a62345a0e1a511dbc0fe27a26cf1f23fde71bf1b9bd3aaf0edeb3509d2fc21815f7fc68d433875cd7b1b8670ea3ee8d3b80d16fa3ff9c67a53fa7f5188c17493fa7f518e4103ea71578c75f01c727aeba20feda4275beeb1ddfbf27a7f7e0736054e707305e34b86716eb8373efbff199a9f1f87c15f79c34c5c3fb1aecdb7fa9ed96b91beaf725c88c39812c789f40757ee59db3ae18ee3511ef7d22e6bda4d56a57c6cf2fbe7e56871e784f5f223a14fb7cafd716caeb1e680bd5f94fef1e30f9fb96e23d60f26d1d794f42e3407b445ba9ce7f415ffb23dce3d179c2cf1d75d5e7fe9db652f780a49f6df378ff3e30c696f0fbc0b5d5c375fddff925adcbfd7de04eef7d127f1ff87f21cfeae03974aeb17a5d8c462b4023aa83df0da2eb08fe966fd45cc7f9fa3c9d0bce9d27c0eb24cf7d53f4f5cf9f578bba4758e1698cf708b31c7383d3d9afebcf17d2f532c9e786f1bb122d1017bf2bd1c2a4671e74eb837dbc2f389fb1f34cb1e37e733a3f0eb1e37e737a3c62377ab11bc731b66aae9a4bd29ce13791c3ef9fe16f96daadd47d2931e4e07d552960ac4e01634d0a186b53c0589702c64929609c9c02c62929609c9a02c62c309ecf6b3b833e85b1eac375be4add6b60ecd54c5a94f3ff7730ff5f2a25ef7d3036c367ba508bd5c1e8b5c0cf791cbffd50eefff5420cf87f17cc4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a189b53c078410a182f4c01e3452960bc38058c97a48071a93226c2b89297b1305646cbc3f17ffe3d99ff738c81271ff5cc29d3774fcafeffd6987f9fb475acbf1b87cf96f0fe9f704feeb7ed389e1d29f7b7ed4afd7fab4c8c85b132723d0b84cf1d8d8627eaf9a0565ec6c25819b9beff82dfd11b0d4f2768d611a119036361ac8c5ccfca95fb2c273ed3df19a119036361ac8cf85c75823ca1665d65f07483665d119a313016c6cac8f55c7216628c86a70734eb8ed08c81b1305646a6efb6859af594c183df01eb89d08c81b1305646cbb39649b3de3278d68266bd119a4962449ea47f27bb372216c77706cb6d3b3120e39414304e4d01233e27c1317e957a4ea297579fc258f5e13a5fa59e93c0d80cdf8f09b5c0ef43fc252dd6f3f2947c4e02636f60d202bfaff297b4d8003c1cdf9fc9428cd1f010430ede3723058c3353c0382b058c4d29609c9d02c63929609c9b02c67929609c9f02c60529605c9802c64529605c9c02c6252960c4cfaa0cf78a253fbf6c98e0b1e33eab4cf4d8719f4b267a6ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf35c52ec34ccf12be3c463449ee6e478f2d8768cd527a0ed7d113c19a6b663ac4d02da4e0c6963dc9802c6b52960541d8bcf208e85d1f26c66e2d95406cf66e0d9c2c4b3b90c9e2dc0b335799e30a7b694c1430c3978dfda14306e4c01a3eaa83a5ab35bfec96daaa320c634e8a88ccaa88cca783e18d330862b632af2b1305646cbb32d799e50b3ad65f06c03cde87dad2960ec4b01e3465ec6c258192dcff6e47942cdb695c1b31d34a3f7b5f23216c6ca68797624cf136ab6bd0c9e1da0d9f608cd18180b6365b43c3b93e70935db5106cf4ed06c4784660c8c85b1325a9e5dc9f3849aed2c83671768b633423306c6c258192dcfeee47942cd7695c1b31b34db15a119036361ac8c96674ff23ca166bbcbe0d9039aed8ed08c81b1305646cbb337799e50b33d65f0ec05cdf64468c6c058182ba3e5d9973c4fa8d9de3278f681667b233493cab836058c1b53c0c8ac6361ac8c96673f13cfbe3278f603cfa54c3cfbcbe0b914789e9a3c4f98539796c1430c3978dfda14306e4c01a3eaa83a4a62541d2b4747655446652c8fb12f058c7aae95512a23c3e7ab92df45ba7482c76ef062375448ecb8ef224df4d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e6b9a4d807928f5d28f737660e000fc76fde30b5336f8f7b993bd69f12d4cf6a75b9a7d5a59e5639a87319e87739837e19884bc7a67d8a572ef353043033c52e4c33c79802eda7181b3d3d6cfc2b98da1e37d65f31c163c78df5133d76dc583fd1636b9e6b9e57426ccd73cdf34a88ad79ae792e2536966b83e1fb76fafd537b8ca7b9728ddb4756f2539dab27155f1b02ed431cb1b50fe9b5a212626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae7f2f21cf3a16a1c78028f2728c1b34b18cf76613cddc2783a84f11484f12c16c6335718cf0c613c9b84f14c11c6b35c184fb5309ebc309e25c2785608e399278c673c9e6f2e8767a6309ecdc278a60ae3a911c6b34618cf6e613cbdc2787608e3e911c6b355184fa7309ea5c278da84f1b408e3992f8c6796309e95c278b2c2786a85f1ac16c6b35718cf3a613ccb84f12c10c6d3248ca75e184f4e184f9d309e7dc278f608e3592f8c67a7309e6dc278ba84f16c11c6d32e8c6795309e85c278660be399268ca74118cf24613cfb85f12c12c6334718cf74613c8dc2783608e3992c8c272380271b9cfb9b6459f8fb01f05579efb5e3674fd3f0dfaf74fe2a78cf55ae5c1d71ec2bc147df0dbf2ae2bda8d395d0963e57ce3fb92dd40963f5c13ec5ab078eab84f04c16c6b341184fa3309ee9c278e608e359248c67bf309e49c2781a84f14c13c6335b18cf42613cab84f1b40be3d9228ca74b18cf36613c3b85f1ac17c6b34718cf3e613c75c27872c278ea85f13409e359208c6799309e75c278f60ae3592d8ca756184f5618cf4a613cb384f1cc17c6d3228ca74d18cf52613c9dc278b60ae3e911c6b343184faf309eddc278d608e3a911c6335518cf66613c3385f11c10c6334f18cf0a613c4b84f1e485f1540be3592e8c678a309e4dc2786608e3992b8c67b1309e82309e0e613cddc278b60be3d9258ca72a8287e1ffbf0c79e8f9353a36ed1f10129be13c84ffefe7d54c6dbac61dabd61d97f8295e0dd439e42ec4f679147c2f71f9cf1be2bdfa35a0d1354c6da1f391f1ce0f73ec023e57190043e0e91344f0703c8fcad4ce117998e0ff3f9bb75a5deb69e59fbb1cd4b91af4bb9641bfa8dca67d8a974666cb43cf8e126b16ea6d10c248be2b7879c27ebb2118b995eab7d7020fc718c6d4ceb07f5de7b5694384ee540773f53a867646f51ddabf0ece43da982d0f7d3624d62cd4db2484917cd7f0f284fd6b5330722bd5bfae031e8ef187a99d61ffbade6bd3a608dda90ee6eaf50ced8cea3bb47f3d9c87b4315b1e9a1b27d62cd4db2c84917cd7f2f2b467a1cdb495ea5fd7030fc7f8c3d4ceb07fdde0b5697384ee540773f506867646f51ddabf01ce83322b7314b3e5a167ce89350bf5b6086124df75ac3cedf92cb499b652e3d80dc0c331ce33e91e8e63377a6dda12a13bd5c15cbd91a19d517d87f66f8c88dd1c24abc54da3d0e2a6089e9bc6590b8a572ef3d52964569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a1dfec23d62cd4db2a84917cd7f3f284df0bda1a8cdc32de7e1f946f029e1b18f4616a67f80cf941af4d5b2374a73ad8bf0e32b433aaefd0fe41380f07cb60be3185ccaaf3d8982d0ffd5f0bc49a857adb843092ef065e9e701cdb168cdc4a8d63078187639c676a67388ef57b6dda16a13bd5c1fed5cfd0cea8be43fb144f9995398ed9f2d06f66116b16ea6d17c248be9b58790ae1f71bb70723b752e3583ff01c4c9ca7388e31e81e8e6387bc366d8fd09dea60ae1e62686754dfa1fd43701eca61be3185ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3a578ece9687fe6f4262cd42bd1d4218c9779095a72d5c77d8118cdc32de7e1f940f014f7fe23cc5750706ddc37587c35e9b7644e84e75b07f1d66686754dfa1fdc3701e263af38d2964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b9617976ba32b166a1de4e218ce4ebe7e5097ff7606730722bf5dcce61e039c4a00f533bc3e7768e786dda19a13bd5c1fe7584a19d517d87f68fc0795066658e62b63cbb5c9958b3506f971046f21de2e509c7b15dc1c8add43876047838c679a67686e3d880d7a65d11ba531dccd501867646f51dda1f80f3a0ccca1cc56c7976bb32b166a1de6e218ce43bcccb138e63bb83915ba9716c007838c679a67686e3d851af4dbb2374a73a98ab4719da19d57768ff289c076556e62866cbb3c79589350bf5f6086124df115e9e4216da4c5ba971ec28f0708cf34ced0cc7b19bbd36ed89d09dea60aedeccd0cea8be43fb37c379481bb3e5d9ebcac49a857a7b8530926f809727ec5f7b83915ba9fe7533f0708c3f4ced0cfbd731af4d7b2374a73a98abc718da19d57768ff189c87b4315b9e7dae4cac59a8b74f0823f98ef2f284fd6b5f30722bd5bf8e010fc7f8c3d4ceb07f1df7dab42f4277aa83b97a9ca19d517d87f68fc379481bb3e5d9efcac49a857afb8530920faf17fb9978721e4f2e428b8918bbc18bdd5021b11bbdd88d15125bf35cf3bc12626b9e6b9e57426ccd73cdf34a885da9b9a69a57a6e699f3a879e63c6a9e51cd456afea7e46277e0b85205b18e31b513b73e28e3fc1c6dddc2783a84f11484f12c16c6335718cf0c613c5384f12c17c6532d8c272f8c6789309e15c278e609e399298c67aa309e1a613c6b84f1f40ae3e911c6d3298c67a9309e36613c2dc278e60be399258c67a5309eac309e5a613cab85f1ac13c6b34c18cf02613c4dc278ea85f1e484f1d409e3592f8ca74b184fbb309e55c278160ae3992d8c679a309e06613c9384f12c12c6734018cf1c613cd385f1340ae3992c8c272380271b9cfb7d14fc3e4135f8e8f9fefde07bba2b1f005f55440c3ace71f0d1fc291dc38e7f5b9bce65a882f7dc12c1f5f4887814e79688f78e87ee18ab0ff6295e3d70dc228467b2309e46613cd385f1cc11c6734018cf22613c9384f13408e399268c67b6309e85c2785609e36917c6d3258c67bd309e3a613c39613cf5c2789a84f12c10c6b34c18cf3a613cab85f1d40ae3c90ae359298c6796309ef9c2785a84f1b409e3592a8ca753184f8f309e5e613c6b84f1d408e3992a8c67a6309e79c2785608e359228c272f8ca75a18cf72613c5384f1cc10c6335718cf62613c05613c1dc278ba85f15445f01c60e289fb3d85030262dbfd3ce862b72cfc7d3cbe0778c063a4fd63c088bcc49367e289fb0d8abc80d8b6fdf45982d6bcb2f077fc1e17574ee53d46da8fca297c4e6e0d134fdcef76ac1110db6a417397f40c4016fe8edf5be0caa9351e23ed47e554232f4ff87f4bac0e466ea59e35c23ec7710e99da99c7fe97e06f6844fe16f56a4f2bfc0dd5f178ee316e3ca078caaccc71cc9687e69e8915af67e3f1bdc9d130465d5f1978c2f1b12518b9951a1f8f010fc7f583a99de13876c26b534b84ee540773f504433ba3fa0eed9f8888dd1c24abc5c95168713282e7e4386b41f1ca653e904266093a5b9e55ae4cac59a8b74a0823f9f2bc3ce1f8b82a18b9951a1f4f020fc7f583a99de19870ca6bd3aa08dda90ef6af530ced8cea3bb47f0ace4339cc2752c8ac3a8f8dd9f2d01c29b166a15e410823f98eb1f214f25968336da5c6b153c0c331ce33e91e8e63835e9b0a11ba531dec5f830ced8cea3bb43f08e7419995599995599995599995599995599995599995599995599995599995599965335b1efa2e21b166a15e9b1046f29d64e529ae3bb40523b752eb0e83c0c3b12ec3a47bb8ee70da6b535b84ee540773f534433ba3fa0eed9f86f3a0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2992d0ffda634b166a15ebb1046f29de2e509bfb7d51e8cdc4aad3b9c061e8e7519a67686eb0eb77a6d6a8fd09dea60aedecad0cea8be43fbb7c2795066658e62b63cf45b52c49a857a1d4218c937c8ca535c3fed08466ea5c6b15b8187639c67d23d1cc7ce786dea88d09dea60ae9e61686754dfa1fd33701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b4767cb43ffc719b166a15ea71046f29d66e5690bd71d3a83915ba9758733c0c3b12ec3a47bb8ee70d66b536784ee5407fbd759867646f51dda3f0be761a2339f4821b3e6c6f8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbd3e5cac49a857a5d4218c9772b2f4ff8bb075dc1c8add4733b6781e70c833e4ced0c9fdb19f2dad415a13bd5c1fe35c4d0cea8be43fb43701e945999a3982d4fb72b136b16ea750b6124df195e9e4216da4c5ba9716c087838c679a67686e3d86d5e9bba2374a73a98abb731b433aaefd0fe6d701ed2c66c797a5c9958b350af470823f9f0badcc3c493f37872115a9cafd876bfd795ebdd6b16fede0b8c5ce3618fc748fb98e3c84b3cbd4c3c0d1e4f438416e72bb66dff3a579ee65eb3f0f775c0c89553bd1e23ed47e55403f0ac63e269f4781a23b4385fb1ad16eb5d79ba7bcdc2dfd70323574eadf318693f2aa71a81673d134fdc98b47e1c62c7f5aff1881d972be3115b3557cd5573d59c53f3cc79d43c731e35cfa8e6a23467b88f0ae77b2946000cb8f541193f2b70dc7b32b5331ff5796cbdd726fc3c86730ee7ebf386322b731c33d3bc457bd68b4dfa041e0f6d43cc5a8ce7bc69afd7a634cc9b96623e914266d5796ccc36f6edc9c76ecf7ab1499fc0e3a1ed76662d98da198e077704d11a53bc1cd4c13cbd83a19d19884bc7a6fd3be03c94c37c2285ccaaf3d8986dec3b138f5dfc3d798c4dfa041e0f6d77326bc1d3cee278705710ad31c5cb411dccd3bb18da9981b8746cdabf0bce83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9178ece2fc3dc6267d028f87b667306bc1d3cee2fcfddd41b4c6142f0775f09cdfcdd0ce0cc4a563d3fedd701e945999955999955999955999955999955999955999955999955999955999955936b38dfdcce46387dfc7c1d8a44fe0f1d0f64c662d98da19cedfdf13446b4cf1725007cff93d0cedcc405c3a36eddf03e7419995398ad9c67e56e2b18beb79189bf4093c1eda9ec5ac054f3b8be3c1bd41b4c6142f0775f09cdfcbd0ce0cc4a563d3febd701eca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d2b47671bfbbec463b785f3f7189bf4093c1edaee63d682a79dc5f9fbfb83688d295e0eea609edecfd0ce0cc4a563d33ec5ab04e6132964d6dc181f66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f3bf9d8e1f7d93136e913783cb43d9b590ba67686cfbf3c10446b4cf1725007f3f401867666202e1d9bf61f80f3a0ccca1cc56c633f987cec42d68b4dfa041e0f6d0f326bc1d4ce703c782888d698e2e5a00e9ef38718da9981b8746cda7f08ce43da98f1fc65928b1d3eb74931aadcabf53dc795abc1f75c57ae01dff35cb9167ccf77e53af0bdc0952781ef85d036f2bdc8955782efc5aebc1e7c2f71e575e07ba92bf782ef65aedc03be97bbf210f85ee1cab781ef95ae7c3bf85ee5ca7780efd5ae7c27f85ee3ca7781efb5aefc0cf0bdce95ef06dfeb5df999e07b832bdf03be37baf2b3c0f72657be177c6f76e5fbc0f71657be1f7c6f75e5a5e07b38c2f736577e36f8deeeca0f80ef1dae7c007cef74e529e07b972b4f05df5f41995edfedcaf5e07bc49573e07b8f2b4f03df7b5db9017cef73e5e9e07bbf2b3782ef03ae3c037c1f74e599e0fb902bcf02df875db9097c1f71e5d9e0fba82bcf01dfc75c792ef83eeecaf3c0f709579e0fbe4fbaf202f07dca951782efd3aebc087c9f71e5c5e0fbac2b2f01dfe75c19cfef5fbbf283e0a371e521f0d1b8f21cf0d1b8f25cf0d1b8f23cf0d1b8f27cf0d1b8f202f0d1b8f242f051debd087c94772f061fe5dd4bc04779f752f051debd0c7c94772f071fe5dd2bc04779f74af051debd0a7c9477af061fe5dd6bc04779f75af051debd0e7c9477af071fe5dd1bc04779f746f051debd097c94776f061fe5dd5bc04779f756f051de3d0c3ecabbb7818ff2eeede06b76e57780ef02577e27f82e74e57781ef2257c671e662577e37f82e71e547c04763e17bc0f714577e2ff896b9f2fbc0b7dc95df0fbe15aefc01f0ad74e50f826f952b7f087cab5df9c3e06b71e58f806f8d2b7f147c7957fe18f85a5df9e3e02bb8f227c0d7e6ca9f045fbb2b7f0a7c1daefc69f075baf267c0d7e5ca9f055fb72b7f0e7c741da771c6f667db2f4907d2c8faa8cd2d116d21df64684b5f90ec3d1dc5a263d37e1b30d239288c3f6361b48cad1ea3e5e960d00cf38ab6529f993a80a79d8187a99de167a64eaf4d6d5e9b7250e729d0ce4e867666202e1d9bf63b2136c739472d6add7197795ad4409d9cbba0d9eb69291de918367f0b116de9616e0b1d9bc6a59e7188dde5c5ce7bb1713ca6ad54ffea02e66e06667bdcdee48f1bf6afb5ee58945314270f6d5a071a24d5268c9d714671c85f03e50b9b86eb523dd283ae5fc46e7399ce25b2fbefebf0de97833a3d11edef0b926d7fafc7d3eb31db7332a7699883a13f8439d0e371d07e1eb4eb8dd1ae07b4a33a78fd2b3069d7edf1747bb12d0fdde374828fee15881fefb35ac681db1ff73a23b8c9d7058c51f73aadc93396bcd7690546f275034f179366feb95ee6e983d7e53aaf0ebdb706ea74c1b5311b51d7f6bba599e176d167f03f05c98ee9750c7ae1fc4000fa049e8601e845edac65e0991a0ccf119c1d1a3cd37ff3c06503fd47328056e361e26b26a21955e0c3329d26f4d90da742704a96a642704a96de8b53b2745caa6f3f4ad966d174c3c0c9e3434f3b3570eaf099bb4e0f0d1cd93b783352d3d1d1570de5aa187f4d848fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b432b533bce84df1da54e7b52907756ae16f5318da9981b8746cda9f12113bc18128d462ea28b4981ac133759cb5c0896ff2614fa5bfe3e24995d716ecd1d8263fcf136d10055c0ac7cf3838fb37dbd96b5d632605c3279b464f7b476b4f829d31b5572d3b236a6740ed10646738ed8ca6bda8d9194b3b43696724ed0ca49d71b4338c7646d1ce20da19433b43d81c146700ed8c9f9de1b3337a9700db9780d77eaab657483b236767e0ec8c9bbdb3b29fd8ecdd88bdfbb6778af6eec0de15d84f967696c15e6ded9d8cbd4adb2babbd53b47788f68ededee1da55aa0dc6363aad3719db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec52634f0d8ab3eb9719bbdcd815c69e66ec4a635719bbdad835c6ae35769db1eb8ddd60ec466337193b68acdfd82163878d1d313660eca8b19b8d1d3376dcd8d38ddd12149fd03969ec94b14163a78ddd6aec8cb1b34171c5ccae90d91531bb026657bcec0a975dd1b22b5876c5caae50d91529bb02755f505c61b22b457665c8ae0ad855003beb6f67f99f171467f1edacfd0b83e2acbc9d85b7b3ee7696ddceaadb59743b6b6e67c9edacb89d05b7b3de7696dbce6adb596c3b6b6d67a9edacb49d85b6b3ce7696f9e1a0388b6c678ded2cb19d15b6b3c076d6d7cef23e12146771edacad9da5b5b3b27616d6cebada59563bab6a6751edaca99d25b5b3a27616d4ce7ada594e3bab696731edaca59da5b4b3929f37f6a8b1bf31f6b7c6feced8df1bfb0763ff68ec0bc6be68ec9f8cfdb3b17f098a79f9afc6fecdd8978dfdbbb1ff30f615635f35f635635f37f60d63df34f698b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b11f19fbb1b19f18fba9b19f19fbb9b15f18fba5b15f19fbb5b1c78d3d61ec37c67e6bec77c67e6fec0fc1f0ea060e227f743b34d3de3f343470f2f450f3d060f3c9db4e0c1d3f7de2aee63b8e0f1d6b1ebc7de0ccd1138377e09bdfed862d5a46d874e64cff5dcdc74f1d19b8b379f0b6a1e6c1a3cd87066f3b75e42cbee90bee4d0bcf8dd87fe4487cb06f563d09d2ef8c31e82fddfb68816657e9b63d3e1641fe309637cdac1e5b83ae72571dfaf47e79f16eb7f9ec89c1a1e67cf329f36fff09f39e81232dcdf8b7b346e4b343cd6787facf0c351f3d3378b2b9b5058fdb3f650c8da86f1ac39b3a9b46dff2e0ff01d6be6389750b0400", "privateFunctions": [ { "selector": { @@ -49,14 +37,8 @@ exports[`ContractClass creates a contract class from a contract compilation arti "isInternal": false } ], -<<<<<<< HEAD - "id": "0x13db790ab35617fe3d1616012e7faf656810c515cf51a6f49ac453e444a3dffc", - "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x1669a01fc7a802e84a6a650d3b51274d51c270cb54b2c77d3ee6fe69e06b7221" -======= - "id": "0x03b7c43dab6f954bfa4fbc60d65dedb4135c2a1646d5fafa63542d54d3dc8f69", + "id": "0x14b672dad467f34b11fbaeefaf822f7099fdd2367ebbba995e4a1b74b4c6f76f", "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x049a5136226b013414c491bb452f8edffae98b96b6d4e95d56824303bf23f6cd" ->>>>>>> master + "publicBytecodeCommitment": "0x0743b13c2af4bb66146f2aa194481bc931aef8c64064bc0c9c8cef017870d99c" }" `; From d8fa9f208034396240c18069b3b6643b2879d4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 19:05:58 +0000 Subject: [PATCH 20/36] Delete hanging function --- .../crates/private-kernel-lib/src/common.nr | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr index 94e8d7d9b81..63081d48cd2 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr @@ -5,7 +5,7 @@ use dep::types::{ kernel_circuit_public_inputs::PrivateKernelCircuitPublicInputsBuilder, max_block_number::MaxBlockNumber, membership_witness::NoteHashReadRequestMembershipWitness, private_circuit_public_inputs::PrivateCircuitPublicInputs, - private_kernel::private_call_data::PrivateCallData, kernel_data::{PrivateKernelInnerData}, + private_kernel::private_call_data::PrivateCallData, kernel_data::PrivateKernelInnerData, side_effect::{SideEffect, SideEffectLinkedToNoteHash} }, address::{AztecAddress, EthAddress, PartialAddress, compute_initialization_hash}, @@ -404,14 +404,3 @@ pub fn compute_siloed_nullifier_secret_key(secret_key: GrumpkinPrivateKey, contr ); field_to_grumpkin_private_key(hash) } - -fn min(lhs: T, rhs: T) -> T where T: Ord { - if lhs < rhs { lhs } else { rhs } -} - -#[test] -fn test_min() { - assert(min(3, 5) == 3); - assert(min(5, 3) == 3); - assert(min(3, 3) == 3); -} From 7557791d0ba786b396b25bacd65743d6a04c27d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 19:06:53 +0000 Subject: [PATCH 21/36] Clarify comment --- .../crates/public-kernel-lib/src/common.nr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr index c9eaaf26ffb..4c0ad847c9a 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr @@ -73,7 +73,7 @@ pub fn initialize_emitted_end_values( circuit_outputs.end_non_revertible.public_data_update_requests = array_to_bounded_vec(start_non_revertible.public_data_update_requests); // TODO - should be propagated only in initialize_end_values() and clear them in the tail circuit. The - // max_block_number must be propagated to the rollup however, and not cleared. + // max_block_number must be propagated to the rollup however as a RollupValidationRequest. let start = previous_kernel.public_inputs.validation_requests; circuit_outputs.validation_requests.max_block_number = start.for_rollup.max_block_number; circuit_outputs.validation_requests.public_data_reads = array_to_bounded_vec(start.public_data_reads); From f83d3cd11af56cb4d269ecddea12c3415513dedc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 19:21:48 +0000 Subject: [PATCH 22/36] Fix tests --- .../src/sequencer/tx_validator.test.ts | 10 +++++----- .../sequencer-client/src/sequencer/tx_validator.ts | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts b/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts index 63d8c8eb046..2d7b33a95d6 100644 --- a/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts @@ -160,20 +160,20 @@ describe('TxValidator', () => { }); describe('inspects tx max block number', () => { - it('rejects tx with larger block number', async () => { - const badTx = maxBlockNumberTx(globalVariables.blockNumber.add(new Fr(1))); + it('rejects tx with lower block number', async () => { + const badTx = maxBlockNumberTx(globalVariables.blockNumber.sub(new Fr(1))); await expect(validator.validateTxs([badTx])).resolves.toEqual([[], [badTx]]); }); - it('allows tx with lower block number', async () => { - const goodTx = maxBlockNumberTx(globalVariables.blockNumber); + it('allows tx with larger block number', async () => { + const goodTx = maxBlockNumberTx(globalVariables.blockNumber.add(new Fr(1))); await expect(validator.validateTxs([goodTx])).resolves.toEqual([[goodTx], []]); }); it('allows tx with equal block number', async () => { - const goodTx = maxBlockNumberTx(globalVariables.blockNumber.sub(new Fr(1))); + const goodTx = maxBlockNumberTx(globalVariables.blockNumber); await expect(validator.validateTxs([goodTx])).resolves.toEqual([[goodTx], []]); }); diff --git a/yarn-project/sequencer-client/src/sequencer/tx_validator.ts b/yarn-project/sequencer-client/src/sequencer/tx_validator.ts index a137285d06f..8be5fba85fc 100644 --- a/yarn-project/sequencer-client/src/sequencer/tx_validator.ts +++ b/yarn-project/sequencer-client/src/sequencer/tx_validator.ts @@ -194,8 +194,9 @@ export class TxValidator { #validateMaxBlockNumber(tx: Tx | ProcessedTx): TxValidationStatus { const maxBlockNumber = tx.data.rollupValidationRequests.maxBlockNumber; + if (maxBlockNumber.isSome && maxBlockNumber.value < this.#globalVariables.blockNumber) { - this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} for emitting duplicate nullifiers`); + this.#log.warn(`Rejecting tx ${Tx.getHash(tx)} for low max block number`); return INVALID_TX; } else { return VALID_TX; From 5c4cfd8f16a34852f71fc1ccef733db836f0deb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 19 Mar 2024 19:23:17 +0000 Subject: [PATCH 23/36] Clarify test names --- .../sequencer-client/src/sequencer/tx_validator.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts b/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts index 2d7b33a95d6..f89d521c87c 100644 --- a/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/tx_validator.test.ts @@ -160,25 +160,25 @@ describe('TxValidator', () => { }); describe('inspects tx max block number', () => { - it('rejects tx with lower block number', async () => { + it('rejects tx with lower max block number', async () => { const badTx = maxBlockNumberTx(globalVariables.blockNumber.sub(new Fr(1))); await expect(validator.validateTxs([badTx])).resolves.toEqual([[], [badTx]]); }); - it('allows tx with larger block number', async () => { + it('allows tx with larger max block number', async () => { const goodTx = maxBlockNumberTx(globalVariables.blockNumber.add(new Fr(1))); await expect(validator.validateTxs([goodTx])).resolves.toEqual([[goodTx], []]); }); - it('allows tx with equal block number', async () => { + it('allows tx with equal max block number', async () => { const goodTx = maxBlockNumberTx(globalVariables.blockNumber); await expect(validator.validateTxs([goodTx])).resolves.toEqual([[goodTx], []]); }); - it('allows tx with unset block number', async () => { + it('allows tx with unset max block number', async () => { const goodTx = nonFeePayingTx(); await expect(validator.validateTxs([goodTx])).resolves.toEqual([[goodTx], []]); From 07ccab7f47704e38fa5a2daf6bf833a67b84f03a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 20 Mar 2024 17:37:59 +0000 Subject: [PATCH 24/36] Fix autoformatter error --- .../developers/contracts/writing_contracts/functions/context.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/developers/contracts/writing_contracts/functions/context.md b/docs/docs/developers/contracts/writing_contracts/functions/context.md index b496a16182e..3f38c5a2259 100644 --- a/docs/docs/developers/contracts/writing_contracts/functions/context.md +++ b/docs/docs/developers/contracts/writing_contracts/functions/context.md @@ -1,6 +1,6 @@ --- - ## title: Function Context +--- # The Function Context From 2fbf87698455c646ec913e3bc9d649ee347708ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 20 Mar 2024 17:40:25 +0000 Subject: [PATCH 25/36] Rename get_lower to min --- .../aztec/src/context/private_context.nr | 10 +++--- .../crates/private-kernel-lib/src/common.nr | 2 +- .../crates/types/src/abis/max_block_number.nr | 32 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/noir-projects/aztec-nr/aztec/src/context/private_context.nr b/noir-projects/aztec-nr/aztec/src/context/private_context.nr index 29b7568b54e..d57497de187 100644 --- a/noir-projects/aztec-nr/aztec/src/context/private_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/private_context.nr @@ -11,8 +11,7 @@ use crate::{ use dep::protocol_types::{ abis::{ call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector, - max_block_number::MaxBlockNumber, - nullifier_key_validation_request::NullifierKeyValidationRequest, + max_block_number::MaxBlockNumber, nullifier_key_validation_request::NullifierKeyValidationRequest, private_call_stack_item::PrivateCallStackItem, private_circuit_public_inputs::PrivateCircuitPublicInputs, public_call_stack_item::PublicCallStackItem, @@ -24,8 +23,9 @@ use dep::protocol_types::{ MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, - MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, - MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, + MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, + NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH }, contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest}, grumpkin_private_key::GrumpkinPrivateKey, hash::hash_args, header::Header, @@ -193,7 +193,7 @@ impl PrivateContext { } pub fn request_max_block_number(&mut self, max_block_number: u32) { - self.max_block_number = MaxBlockNumber::get_lower_with_u32(self.max_block_number, max_block_number); + self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number); } pub fn push_note_hash_read_request(&mut self, note_hash: Field) { diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr index 63081d48cd2..416aefca438 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/common.nr @@ -182,7 +182,7 @@ pub fn update_end_values( let storage_contract_address = private_call_public_inputs.call_context.storage_contract_address; // Update the max block number if the private call requested a lower one. - public_inputs.validation_requests.max_block_number = MaxBlockNumber::get_lower(public_inputs.validation_requests.max_block_number, private_call_public_inputs.max_block_number); + public_inputs.validation_requests.max_block_number = MaxBlockNumber::min(public_inputs.validation_requests.max_block_number, private_call_public_inputs.max_block_number); // Transient read requests and witnesses are accumulated in public_inputs.end // We silo the read requests (domain separation per contract address) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr index 9ca1368729f..9d693e8e1cb 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr @@ -54,15 +54,15 @@ impl MaxBlockNumber { self._opt.unwrap_unchecked() } - pub fn get_lower(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber { + pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber { if rhs.is_none() { lhs // lhs might also be none, but in that case both would be } else { - MaxBlockNumber::get_lower_with_u32(lhs, rhs.unwrap_unchecked()) + MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked()) } } - pub fn get_lower_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber { + pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber { if lhs._opt.is_none() { MaxBlockNumber::new(rhs) } else { @@ -103,45 +103,45 @@ fn default_unwrap_panics() { } #[test] -fn get_lower_default_default() { +fn min_default_default() { let a = MaxBlockNumber::default(); let b = MaxBlockNumber::default(); - assert(MaxBlockNumber::get_lower(a, b).is_none()); + assert(MaxBlockNumber::min(a, b).is_none()); } #[test] -fn get_lower_default_some() { +fn min_default_some() { let a = MaxBlockNumber::default(); let b = MaxBlockNumber::new(13); - assert_eq(MaxBlockNumber::get_lower(a, b).unwrap(), 13); - assert_eq(MaxBlockNumber::get_lower(b, a).unwrap(), 13); + assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13); + assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13); } #[test] -fn get_lower_some_some() { +fn min_some_some() { let a = MaxBlockNumber::new(13); let b = MaxBlockNumber::new(42); - assert_eq(MaxBlockNumber::get_lower(a, b).unwrap(), 13); - assert_eq(MaxBlockNumber::get_lower(b, a).unwrap(), 13); + assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13); + assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13); } #[test] -fn get_lower_with_u32_default() { +fn min_with_u32_default() { let a = MaxBlockNumber::default(); let b = 42; - assert_eq(MaxBlockNumber::get_lower_with_u32(a, b).unwrap(), 42); + assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42); } #[test] -fn get_lower_with_u32_some() { +fn min_with_u32_some() { let a = MaxBlockNumber::new(13); let b = 42; let c = 8; - assert_eq(MaxBlockNumber::get_lower_with_u32(a, b).unwrap(), 13); - assert_eq(MaxBlockNumber::get_lower_with_u32(a, c).unwrap(), 8); + assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13); + assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8); } From bd8e844c4d2dd21ff8802c121eb06b4d00397eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 20 Mar 2024 17:40:34 +0000 Subject: [PATCH 26/36] Remove extra import --- .../private_kernel_inner_circuit_public_inputs.nr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/kernel_circuit_public_inputs/private_kernel_inner_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/kernel_circuit_public_inputs/private_kernel_inner_circuit_public_inputs.nr index 4f202cf8ed5..e7adafbd5e3 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/kernel_circuit_public_inputs/private_kernel_inner_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/kernel_circuit_public_inputs/private_kernel_inner_circuit_public_inputs.nr @@ -1,6 +1,6 @@ use crate::abis::{ accumulated_data::CombinedAccumulatedData, combined_constant_data::CombinedConstantData, - validation_requests::{RollupValidationRequests, ValidationRequests} + validation_requests::ValidationRequests }; use crate::mocked::AggregationObject; From 9fd190c55af023ea550409f9ed90b6c579939be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 20 Mar 2024 19:47:48 +0000 Subject: [PATCH 27/36] Add todo reference --- .../crates/rollup-lib/src/base/base_rollup_inputs.nr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr index 16153db7473..eeaaa11a5a1 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/base_rollup_inputs.nr @@ -74,7 +74,7 @@ impl BaseRollupInputs { let rollup_validation_requests = self.kernel_data.public_inputs.rollup_validation_requests; // Verify the max block number - // TODO: why is block_number a Field and not u32? + // TODO #5345: why is block_number a Field and not u32? if rollup_validation_requests.max_block_number.is_some() { assert( self.constants.global_variables.block_number as u32 From 1f79897fef04c4d8674618a2302bf05bcc30857e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 21 Mar 2024 17:39:49 +0000 Subject: [PATCH 28/36] Fix slither output --- l1-contracts/slither_output.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/l1-contracts/slither_output.md b/l1-contracts/slither_output.md index 0804d318cdd..94469d889b9 100644 --- a/l1-contracts/slither_output.md +++ b/l1-contracts/slither_output.md @@ -254,9 +254,9 @@ solc-0.8.23 is not recommended for deployment Impact: Informational Confidence: Medium - [ ] ID-27 -Variable [Constants.LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP](src/core/libraries/ConstantsGen.sol#L130) is too similar to [Constants.NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP](src/core/libraries/ConstantsGen.sol#L123) +Variable [Constants.LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP](src/core/libraries/ConstantsGen.sol#L131) is too similar to [Constants.NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP](src/core/libraries/ConstantsGen.sol#L124) -src/core/libraries/ConstantsGen.sol#L130 +src/core/libraries/ConstantsGen.sol#L131 - [ ] ID-28 From e6c452b84c7484159835b2d9272e0271eff4a986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 21 Mar 2024 21:34:30 +0000 Subject: [PATCH 29/36] Fix docs --- noir-projects/aztec-nr/aztec/src/context/private_context.nr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/noir-projects/aztec-nr/aztec/src/context/private_context.nr b/noir-projects/aztec-nr/aztec/src/context/private_context.nr index 6a1c8909864..4b70bfd7b6b 100644 --- a/noir-projects/aztec-nr/aztec/src/context/private_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/private_context.nr @@ -192,7 +192,9 @@ impl PrivateContext { self.min_revertible_side_effect_counter = self.side_effect_counter; } + // docs:start:max-block-number pub fn request_max_block_number(&mut self, max_block_number: u32) { + // docs:end:max-block-number self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number); } From 5a915f23f53ecab9660db10785d332c641354194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 21 Mar 2024 21:48:34 +0000 Subject: [PATCH 30/36] Fix extra import --- yarn-project/sequencer-client/src/sequencer/processed_tx.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/yarn-project/sequencer-client/src/sequencer/processed_tx.ts b/yarn-project/sequencer-client/src/sequencer/processed_tx.ts index ccb575e46cc..acaa3ad8083 100644 --- a/yarn-project/sequencer-client/src/sequencer/processed_tx.ts +++ b/yarn-project/sequencer-client/src/sequencer/processed_tx.ts @@ -9,7 +9,6 @@ import { PublicAccumulatedNonRevertibleData, PublicAccumulatedRevertibleData, PublicKernelCircuitPublicInputs, - RollupValidationRequests, SideEffect, SideEffectLinkedToNoteHash, ValidationRequests, From 43279539aa97528241ef0fae9122643bcae69ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Thu, 21 Mar 2024 22:00:06 +0000 Subject: [PATCH 31/36] update MORE snapshots --- .../crates/types/src/abis/private_call_stack_item.nr | 2 +- .../crates/types/src/abis/private_circuit_public_inputs.nr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr index 55f60d7f130..aa03f8589ef 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr @@ -75,6 +75,6 @@ fn empty_hash() { let hash = item.hash(); // Value from private_call_stack_item.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x135b1d61b12d391c14ff7aaae8bcff574a1e22afa20a5b59c67c1418d77fef72; + let test_data_empty_hash = 0x13f518365c690d1b96d31454afed495ad29fe530939caf7189dd44f9bd63ef89; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr index 61cc651e7c4..6e9d54b4b08 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr @@ -184,6 +184,6 @@ fn empty_hash() { let hash = inputs.hash(); // Value from private_circuit_public_inputs.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x23c9b1f89ddf144a2751a74a9179ca41bb8426654fdbb8a69b8f3fad94dbeac6; + let test_data_empty_hash = 0x1304e6c42e3c53fc7c918cbf1ea70333b4f214726c0784cf9878cd641967dab1; assert_eq(hash, test_data_empty_hash); } From d9bfa9c4a76ae98e2df766da1526c08cd7a3e181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Fri, 22 Mar 2024 03:40:12 +0000 Subject: [PATCH 32/36] update more snapshots --- .../contract/__snapshots__/contract_class.test.ts.snap | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 229be793c35..e64435e3d21 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": "0x1f8b08000000000000ffed9d779815c5b6f67b604064cf8898b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020a227e7e4497a3c9e74ef3de73cf78ffbddfb05bfdbb577ad3bef14d5c3ecb16bf3eed9d5cf53b3abd754f7fad5dbabab53755741909efe19a6029d6f19a6b3820327f97f52ff967eb3a94b8ceb2a75c95990239c2d7284b3658e7016e60867ab1ce16c9d239c87e508679b1ce13c3c464ec5d622a83fc5cddbd681ae713326724cd3a21cd0b438c7343d2207346d17e4461b75648e70b6cf11cea37284f3e81ce13c2647388fcd11cee37284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce12cc911ce0e39c279468e709e99239c67e508e7d939c2794e8c9c9d80b3a3fe3d57ff9ea77fcfd7bf52f602fd7ba1feedaceb58a8e72f525c61520f69ca8cff750d537998ba85a9bbf1bf1e61ea19a65e61eaadff57a2ff5711a6ca30f50953df30f5d31af40fd3c561ba244c9786e9b2305d1ea62bc2746598ae0ad3d561ba264cd786694098ae0bd3f561ba214c3786e9a630dd1ca65bc234304cb786e9b6300d0ad3ed611a6cb0dc11a62161ba334c43c37457988685697898aac234224cd5611a19a69a30dd1da651611a1da67bc2746f98c684696c98c685a9364ce3c334214c13c334294c93c334254cf785696a98ee0fd303617ad0d0eca1303d1ca647c2f4a8c1392d4c8f85e9f1303d11a627c3f454989e0ed333617a364cd3c334234c33c3342b4cb3c334274c73c3342f4cf3c3b4204ccf85e9f930bd10a617c3f452985e0ed32b617a354caf85e9f530bd11a637c3f49666911d616198de0ed3a2302d0ed392302d0dd33b617a374ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2f45e983687694b98b686e9fd306d0bd3f630ed08d30761da19a65d61fa304cbbc3b4274c7bc3f45198f685e9e330ed0fd32761fa344cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf73363995f87e93786edb761fa9d61fb7d983ed7f92ff4ef1ff4ef97faf78ffaf72bfdfb27fdfb67fdfb17fdfb57fdfb37fdfb2ffaf75ff5efbfe9dfbfebdf7fe8df7f8669538774be4d5037258398daa8f29ad4b31f11bf63507f525ab4d4ff93df126d2fd4f3f22bdab5d2f3ad0c7b6b3ddfda584f1b3ddfc6b0b7d7f3ed0dfbd17afe68c37eac9e3fd6b01fafe78f37ec67e9f9b3c09e08e0deb0b62b5b4b6d2a009bc46b0bb0b5d2b696606b2dab03db61dad60a6cb27d5b83ed706d3b0c6c6db5ad0dd812da76b86819a6226d4b0671c54ae970b5dee2b8d7ab9f971d113fef08b5de768e788f8c9f77a45a6f7b07bc2a3e8ed2eb3a12e2e6686d6b0fb663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056ca76bdba9602bd1b6d3c0a69bdce074b09da16d25603b53db3a80ed2c6d3b036c676bdb99603b47dbce029bb4bf67834dce17cfd136d5761c5e00cb68bbb45ba965a4cd06db79d25e83ed7c69abc1d649da69b05d00bec57621b43562ebac6dd26ea9fff5d6f96410d77e5256a3d65b11f77ac335abf5f6897fbda9678e7d833aad93e0a702b4eaa7f331f66bea82be0b74123f622f84fcd55056ca891e72ec1176758ca9d4f97e0d2cd7db58ae18ca545aea9f0ce2ad7f1f83a78fc1dc0af26e62b66b571fb38d9e328ed94150d68c3d390f6a8e313b00381cc46c0f1fb38d9e328ed91a286bc69e9c0b37c798bd03381cc46c959b982d2bf5319bbe6f1604f6d893eba1e618b3a38123fe98ede663b6f153c631fb049435634fae899b63cc4e058ef863b647953f3768f49471ccce87b266ecc9fd99e618b34f03878398adf1ed6ca3a78c63f62d286bc69edc2b6c8e31fb3c70c41fb3bd1cc56c571fb341fa196810d8634fee5b37c7985d041cf1c7ec087f7fb6f153c631bb1dca9ab127cf509a63ccaed379f59ce127fa39c32960fba9b69d0abcf1c776753747b15de6633bdd372408ec312acff39a636c7fa8f32a8e7f01fd11c4f64b6deb00b65f69db1960fb4cdbce847a39d807aafc3ed0e829e37de03750d68c6579b6dc1cf7811f01878398adf631dbe829e398fd1b9435634ffa3934c798fd3d703888d91a1fb38d9e328ed9ff84b266ec9dabf3cd3166a5afa93a5ff8429f2f9c0fb63f685b27b07da96d1780ed8fda7621d8bed2b6ce60fb93b65d04b63f6b5b29d8fea26d5dc0f6576d2b03dbdfb4ad2bd8fe45dbcac1f6afdad60d6cffa66dddc1f6776deb01b67f685b4fb0fd53db7a699b7ade257dafe4bcb50df0278378b7adf4bb9475cb7c972cf86e67f86e9745dfed0ddfed2dbecb1cf84e800f990a8cf924e4cbdcf29416030ffa2a8fdf575755f7ae41e3eb5e0e3cdd1cd43d013e1ac3d30d78bac7cf93eaffdb23fef5a6b6715743d304f8ea0af5eae9a05e05e04bd62df3e2af186cd8b6f6b430f68a9fb1ac007cc9ba65be17308a0ddb7a79e74af61f753cec5850c7eb605f4a9d13893ff96e997094835dca5cd5a18ead93662b82ffe371afbb61731497a9b8105fb26e99177f45509feed9672c6b2c633783d1551b5100be64ddde77dd76903c1ec71d5ceb58db34f15d9105dfbd0cdfe5866f6c3b656ae8d8d60b9863bfe6d4c7b6caf8d75b8ad727726d287ef0fc01afe1e2aa13fa966b43f123f642c85f57505756ca891ed20e0bbb8a65d996c86e2ed7d358ae18ca5458ea9f0ce2ad7fa5c1536930ab6d72091c0b1dec0fa918a8303864be1cb4ab8cd0ae02b49332e78276aedab3de068fcc77071e69c77a008fab6ba2289e6c5c8f1dcc379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6572f60b49dab38b89e69f05ca51b308aad37f07475a459d476ed4ae2db41aca4da23f121e7e6b2ff7607bb94e9a55fa8536de53dd056ba88118c47991a7bcd1bff762a4b5d8377cb8007b79d83ebaa2e8ee2b114efdf7c1dc41b6b66bbd4cdd02aea1e8fabb6bcabc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae3b09a3d9ffcdd57dfed4f70ff5ba64fdeab9ceff71da1facac14fbc7483f88f38d3a174299e2167565ff3ff407339f53611fc9ee6eb54b6d4bec8f998479f1877dad705b32f4772a89cd77d90857cfdbd437c0d47734cdbe9fdd2d9abae8ff8c9a16189a627ffc0b0c1e15a7952debd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd22a8df7ee071c655ff1d69abe5797985e1bb10ca9cdca26edb48df2a1963b8abb11cf6fb9175cb32e783bdd258773bbdac70b432d6df03969532a7419bbaa7459d660edacab24cfbaee373f3f88fc3e9e7f85d33e0e9023c2eda1947e71ba5b80fc4fd1cdfec9f663b8f9132d8b7cf41bfca06fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43ea79867cab4cd69ffa5e708b3abfae9fc3c933a74e469df1ddd17fb6a82bbb49e78b8203fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77fa39be8bb121e4397e5743d7728ba6aef6577cc68a9ae2fedacde0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b65de06adb9795ba6c37f0bb29c9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb0baeab40a7fe86068590ffbc455d59292765456b6157fb887c0306d9cde5ba19cb154399be96fa278378eb6f7e6bb59fc1acb6c9cf20cebe80e3bfab36a96f8446e7834652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3cf3bd9fd67f417b11773fadff8218c27e5a81b1fe4eb07ee16a1d441f5ba4ccff33d66f9e93cb32d80fec7ff613f89e4b99ce67724e7ea8aeaf6ce7e4b85c54dd15337e072d192333c604b2e079829469abb5966d5619c1ddcbb26c71c4b2a295f9adb0a2e040fddc7c672dbdcff733ea22718ddf20973247435ddc9cb7a4cf015d7d532e097552f9324b5da5cc09b0af9da4f309d84eb8df9e67f9bf4c0d9d03e218ee17c75fe7d4f6bd043893e0077d5f0aac31f9ee82bee51c50fc88bd10f2e7b6ac2b2be5440fd15ad8d53e22e751c86e2e57612c570c65fa5bea9f0ce2adffc506cfc506b3da26a7429c9d07fdd05db5d5fd2334ea041a4919bca768fb0ea8ed5e87abf737a2cea5f0fd25f3fc0a8f936ece9bece7b1e67d35db394227831fcf117a403b9bb09435ef17caf132ce7ec3f8ae440ff08bef4ab8fa76736fd02d09f3785e70287dbbf88eadf217356642ef2cf88e1a33211bbedb1bbedb67d1b7d7dc6bcea4b983310852ef9fe1374bd5d4d079298e4b20cbb500461763392482fadf1e3f18238eef20cbb5044617c7874cbf7dde031865b9426074f16e298ebfd11846fcc6301ee785d1c1b762bb34f55bb1784faf353032bdb389cfa60e034617e7c54d7d570fcfe7dbc0afab7189ba66c058068cb2dce1c0e8e2de385ecb348611af8b64b9b6c0e8e21956a6e33be1b7e7f1deb24bc6868eed8efba294657aefa5d22d4f83e71ae8dbc1b886292df03ee3c1b4e8e396a7c1731ff4ede0be5f4a0b1c67f0605ae0b34117e31e2682facfe10ec683cf2f65b9a38031e988b15f068c4960fc9f7bc5c0d8df11633203c6fec028f66380d1c1fdd71463ff0c18f13ea52c772c305ee288f1e20c182f014659ee386074712f35017e1bc3782930ca72c703e3658e182fcd80f1326094e54e00c6cb1d315e9601e3e5c028cb9d088c573862bc3c03c62b8051963b0918af74c47845068c5702a32c7732305ee588f1ca0c18af024659ee1460bcda11e35519305e0d8cb2dca9c0788d23c6ab3360bc061865b9d380f15a478cd764c0782d30ca72a703e300478cd766c038001865b91260bcce11e3800c18af034659ae03305eef88f1ba0c18af074659ee0c60bcc111e3f51930de008cb2dc99c078a323c61b3260bc111865b9b380f126478c3766c0781330ca726703e3cd8e186fca80f1666094e5ce01c65b1c31de9c01e32dc078b38571a023c65b32601c088cb2dc05c0786bfc8ca96be9811930de0a3cb7c5cf93d2ecd60c786e73cb93faaedead165fb7c7ef2bb52d06058daffbedc033387e9ed4b6b83d031e612886e550b33be2674c69363803c63b806748fc3c29cdeec880670868768745b33be3674c69362403c63b816768fc3c29cdeecc8067286876a745b3bbe2674c69363403c6bb806758fc3c29cdeeca80675850a7d95d16cd86c7cf98d26c58068cc381a72a7e9e9466c333e0a902cd865b341b113f634ab3aa0c1847004f75fc3c29cd4664c0530d9a8db06836327ec69466d519308e049e9af879529a8dcc80a706341b69d1eceef819539ad564c07837f08c8a9f27a5d9dd19f08c02cdeeb668363a7ec69466a332601c0d3cf7c4cf93d26c74063cf78066a32d9addeb88f19e0c18efb5f0c4fd9dec7b2cbec63aaafb98a0f175178662580efb498c73c4383603c671c028cb613f895a478ce33260ac0546592ee198b1a17e12b5e07b7cfcbe53ed526dd0787dc6bbe569b09f04fa9ee0488bf141e3b598e096a7c17e12e87ba2232d26048dd76222f04c72a045027c348647188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc47d8e18a764c0781f30ca72d84f62aa23c6fb32609c0a8cb21cf693b8df11e3d40c18ef0746590efb493ce088f1fe0c181f0046590efb493ce888f1810c181f0446590efb493ce488f1c10c181f0246590efb493cec88f1a10c181f0646590efb493ce288f1e10c181f0146590efb493cea88f1910c181f0546590efb494c73c4f868068cd3805196c37e128f39629c9601e363c028cb613f89c71d313e9601e3e3c028cbddeb98b1a1eb97c79bb9efa86b95e6ee3beabaa4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df4f38f09d001f321518f349c80b43312c77af676cd68cc853121f4f29d61d7d3d4950f7272d3c058eea8ebe9e22a8bb30e41ae31339c0786f0e307a1dd37d109bc2a8789e76c4f354063c4f03cf338e789ece80e719e079367e9e544c3d93018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193da3673c148cb9d0867bc69c88c7b2a6322a9ee9f1f3a4347b36039ee9a0992c779b5bc6b2a6322a9e19f1f3a4349b9e01cf0cd06cba4533078c654d65543c33e3e749693623039e99a0d90c8b660e18cb9acaa87866c5cf93d26c66063cb340b39916cd1c3096359551f1cc8e9f27a5d9ac0c78668366b32c9a39602c6b2aa3e299133f4f4ab3d919f0cc01cd665b3473c058d65446c533377e9e94667332e0990b9acdb168e680b1aca98c8a675efc3c29cde666c0330f349b6bd1cc016359531915cffcf879529acdcb80673e6836cfa2192be3bd39c0f8440e303ad6b1aca98c8a6781239ef919f02c009ee71cf12cc880e739e0793e7e9e544c3d97018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193d63668c4fe600a3dfd69e9195d1c1f55583efd03cd7cc7d47bd43d3dc7d47bd43d3dc7dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993ef17e2f75d96e937665e001e17dfbc7154cf52b5de17f5babe8e513fa5d54b8656cf195a1543991741bf971ce857007e65dd322ffe3265ee48c0ecc877d911e13a0e87fa8b8f270c3d94ff971dd53daaad7fb999fb8e6aeb9bbbefa8b6beb9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f18df95641dd79bb7cff54ade3159d2fd4f352fe49b04b994987a57fdb057e1f72e1dbef43fe58910fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671ce17e7180f9559e0090c9ea0019ef9643c53c8786691f18c22e31942c6733d19cf25643c0f93f19493f18c27e31941c6732b19cfd5643c1791f1f425e3994ac6d38b8c673619cf3d643ccf90f10c25e3b9918ce732329e47c978cac8782692f18c24e3b99d8ce75a329e2419cf03643c3dc878ce23e3194bc633878ce75c329e61643ccf92f1dc4cc67304194f3b329e2bc8789e22e3b9908ca7828ce731329e79643c93c978ee26e3b9838ca7948ce73a329ece643c1793f13c44c6d38d8c672e194f2d19cf74329e2a329e81643ce793f15c45c6d3928ca70f19cf02329efbc8787a93f18c26e3e944c6732719cf0d643c9792f13c42c6d3958c670219cf0c329e6a329e41643cd790f1f423e3b99f8ca72719cf18329e8e643c7791f1dc44c6938def9966c25344c6534cc6733919cfe3643cd3c878ba90f14c22e39949c65343c633988c6700194f7f329e07c978ba93f18c23e3194ec6730b19cfd3643c4792f1b427e3b9928ca7808027111c38864902feff02d85a18cbaacfbeceee50f7ff57b5bd052cf39aceb7b4acfb55b0c9b7645fb32c8b3abd0a7549ea7ce9379b523aa1af24cc8bbf22e0788d84e74a329ef6643c4792f13c4dc6730b19cf70329e71643cddc9781e24e3e94fc633808c6730194f0d19cf4c329e49643c5dc878a691f13c4ec67339194f31194f1119cf0b643c3791f1dc45c6d3918c670c194f4f329efbc978fa91f15c43c633888ca79a8c670619cf04329eae643c8f90f15c4ac6730319cf9d643c9dc8784693f1f426e3b98f8c6701194f1f329e96643c5791f19c4fc633908ca78a8c673a194f2d19cf5c329e6e643c0f91f15c4cc6d3998ce73a329e52329e3bc878ee26e3994cc6338f8ce731329e0a329e0bc9789e22e3b9828ca71d19cf11643c3793f13c4bc6338c8ce75c329e39643c63c978ce23e3e941c6f300194f928ce75a329edbc9784692f14c24e32923e379948ce732329e1bc9788692f13c43c6730f19cf6c329e5e643c53c978fa92f15c44c6733519cfad643c23c878c693f19493f13c4cc6730919cff5643c43c8784691f1cc22e39942c6339f8ca7d2c2f382231e79df5dd62df32f90f876b01d4ad57a5f7754a737f4ba5ae9f50abff82b8432d3daa67fd5f30f5c56b8ccef13e0bb396f80466f38aa8b6c8f0263fba0ef571cf936c7e793f9579ab9ef7686ef7679e2bbbde1bb7d9ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2ede0daa00cbf93265381319f843c5e2fb8f8be9ca37ad6bb4efc3a46fd94566f1a5a99d756c550e675d0ef4d07fad9ae3d655efc65cadc918019e3a22488372ede8abf4e65aadfe1e1a0eb5b86be58af858e348d3a862c6ce6bea38e21cddd77d431a4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fdb6cec778dd588a3ed4f345b91e781bfc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732ff1b9e6bfa7ddeeff371f9f6c7361fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe99e3dccc4b7ff17381cd557ffea858ccc6bb0487d277542c3677df51b1d8dc7dfb38f771cee47b8903df09f02153437dfc9600cf22073c8eea997ab6b1d4a8d30b469d8aa10c1ee3973aa86701f89575cbfc52e091a912785cc44163b639f2cc27e39942c6338b8c671419cf10329eebc9782e21e379988ca79c8c673c19cf08329e5bc978ae26e3b9888ca72f19cf54329e5e643cb3c978ee21e379868c672819cf8d643c9791f13c4ac65346c633918c672419cfed643cd792f124c9781e20e3e941c6731e19cf58329e39643cc3c8789e25e3b9998ce708329e76643c5790f13c45c67321194f0519cf63643cf3c8782693f1dc4dc67307194f2919cf42329eebc8783a93f15c4cc6f310194f37329eb9643cb5643cd3c978aac8780692f19c4fc67315194f4b329e3e643c0bc878ee23e3e94dc6339a8ca71319cf9d643c3790f15c4ac6f308194f57329e09643c33c878aac9780691f1bc49c6730d194f3f329efbc9787a92f18c21e3e948c6731719cf4d643c45643cc5643c9793f13c4ec6338d8ca70b19cf24329e99643c35643c83c9780690f1f427e379908ca73b19cf38329ee1643cb790f13c4dc67324194f7b329e2bc9780a087812c181effe27e0ff6f824dde517f016cefe8fc22b0b5b0f868a9f34bc156a8f3b28ec3c2f4728703d78d3ab97a2f1f7d25615efc1501c73b243c5792f1b427e339928ce769329e5bc8788693f18c23e3e94ec6f320194f7f329e01643c83c9786ac8786692f14c22e3e942c6338d8ce771329ecbc9788ac9788ac8786e22e3b98b8ca72319cf18329e9e643cf793f1f423e3b9868ce74d329e41643cd5643c33c8782690f17425e379848ce752329e1bc878ee24e3e944c6339a8ca73719cf7d643c0bc878fa90f1b424e3b98a8ce77c329e81643c55643cd3c9786ac978e692f17423e379888ce762329ece643cd791f12c24e32925e3b9838ce76e329ec9643cf3c8781e23e3a920e3b9908ce729329e2bc878da91f11c41c6733319cfb3643cc3c878e690f18c25e3398f8ca70719cf03643c49329e6bc9786e27e31949c633918ca78c8ce751329ecbc8786e24e3194ac6f30c19cf3d643cb3c9787a91f14c25e3e94bc6731119cfd5643cb792f18c20e3194fc6534ec6f33019cf25643cd793f10c21e31945c6338b8c670a19cf7c329ecaecf094a977dba5af75005c382521bf1478163ad0c7513d4bf1bb065fc7b85ea5d5bb86566f1a5a15439925a0dfbb0ef42b00bfb26e99177fb9c8ac781ed779db77201e276114db42b73ca9fdf6f1a0fed4d07efb2ef0b868d71cd533b57f2d33eaf4b845772983b1bacc413d6dfb8ecc2f83ed906bcc8ae7299d17d604947b8a84516c4bddf2a4f6afa782fa5343fbd732e071d1fe38aa676aff5a6ed4e9298bee52066375b9837adaf61d995f0edb21d79815cfd33a2fac0928f73409a3d8de75cb539e803acbd4d0feb51c785cb43f8eea99dabf5618757adaa2bb94c1585de1a09eb67d47e657c076f0cc9ed9c6ac78e4d98eb026a0dc33248c625be694a7bc34017596a9a1766c05f0b868e71de99e6ac7561a757ac6a2bb94c1585de9a09eb67d47e6575a7c9704f16ab1aa115aacb2f0accab216e22f53e62539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9ebac26afb3d7d9ebec758e83d9ebec758e62f63a7b9da3981974563cf2ed4a614d40b9674918c5b6dc2d4feabda06783fa5381319f84fc2ae059e1401f47f54cf5215f6dd4e9598bee5206f7afd50eea69db77647e356c874c9857e620b3d7b969cc8a67bace0b6b02ca4d276114db0ab73ca9766c7a507f6aa81d5b0d3c2eda7947f54cb5636b8c3a4db7e82e6570ff5ae3a09eb67d47e6d7c076f0cc9ed9c6ac7866e8bcb026a0dc0c1246b1ad72ca53967abf7146507f6aa81d5b033c2eda7947baa7dab1b5469d665874973218ab6b1dd4d3b6efc8fc5ad80e9930afcc4166afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9eb9c3f3a2b9e993a2fac0928379384516cab9df2744d3d779819d49f1a7aeeb01678d6c4ce937eeee040f7d4738775469d665a749732b87fad73504fdbbe23f3eb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a6796ce0b6b02cacd226114db1ab73ca9ef1ecc0aea4f0df5db59073c6b1de8e3a89ea97e3beb8d3acdb2e82e6570ff5aefa09eb67d47e6d7c376f0cc9ed9c6ac7866ebbcb026a0dc6c1246b1ad75cb936ac76607f5a786dab1f5c0e3a29d7754cf543bb6c1a8d36c8bee5206637583837adaf61d99df00dbc1337b661bb3e299a3f3c29a8072734818c5b6ce2d4faa1d9b13d49f1a6ac736008f8b76de513d53edd846a34e732cba4b198cd58d0eea69db77647e236c07cfec996dcc8a67aece0b6b02cacd256114db7ab73c6509a8b34c0db5631b81c7453befa89ea9766c9351a7b916dda50cc6ea2607f5b4ed3b32bf09b643ae312b9e793a2fac0928378f84516c1bdcf2a4f6af7941fda9a1fd6b13f0b8687f1cd533b57fbd67d4699e45772983b1fa9e837adaf61d997f0fb643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fdeb3de071d1fe38aa676affda6cd469be45772983b1bad9413d6dfb8ecc6f86ed906bcc8a6781ce0b6b02ca2d2061141b1e2f1638e22936788a2d5a1c2adf6abe42e78bf46f02fe5f018caedac30506a3cc638c23af6bcdda193ced0ccd0ea56f55ff4a9d3f42ffe2f6aa044686edd52e0b9ab53778da1b9a1d4adf4a8b3e3a7fa4fec5edd5071819b6577be071d03e97270c1e353574beb1d9b13e8eea993adfd812d875c7e39094c163f71607f5b49d4bc8fc16d80e9ed933db9815cf409d17d604941b48c22836bc4ed91a3f4f79c2e0515343edd856c7fa38aa67aa1d7b3fb0ebbe1574973218abef3ba86701f89575cbfcfbb01d32615e9983cc5ee7a6312b9e413a2fac0928378884516c5b80675bfc3ce50983474d0db563db1cebe3a89ea9766c7b60d77d1be82e6570ffdaeea09e05e057d62df3db613b64c2bc320799bdce4d63563c83755e5813506e3009a3d8de079e1db1f3a4c703421e3535d48eed70ac8f9b7aa6dbb10f02bbee3b40772983fbd7070eea59007e65dd32ff016c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6788ce0b6b02ca0d216114db76e0d9193b4ffab903f2a8a9a1e70e3b1debe3a69ee9e70ebb02bbee3b41772983b1bacb413d0bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886eabcb026a0dc501246b17d003c1fc6cf539e3078d4d4d073870f1debe3a89ea9e70ebb03bbee1f82ee52066375b7837a16805f59b7ccef86edb0db337b660bb3e219a6f3c29a8072c34818c5b60b78f6c4ce937e7e8a3c6a6aa81ddbe3581f37f54cb7637b03bbee7b40772983b1bad7413d0bc0afac5be6f7c276c88479650e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d87603cf47b1f3742d4d183c6a2a30e69390ffc8b13e6eea997eeeb02fb0ebfe11e82e6570ffdae7a09e05e057d62df3fb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8aa75ae7853501e5aa4918c5b617783e8e9fa73c61f0a8a9c0984f42fe63c7fa38aa67aadfcefec0aefbc7a0bb94c1fd6bbf837a16805f59b7ccef87ede0993db38d59f1d4e8bcb026a05c0d09a3d8f601cf27f1f394250c1e3535d48e7de2581f47f54cb5639f0676dd3f01dda50cc6eaa70eea59007e65dd32ff296c875c63563ca3745e5813506e1409a3d8f6038f83b84bf1141b3c32ff09816f355fabf345fa17b7572d30326cafe22c68d6cee069676876287dabfa8fd7f923f42f6eaff1c0c8b0bdda6541b3f6064f7b43b343e95b693141e78fd4bfb8bd260023c3f66a9f05cd0e657b7828f7ed4319a75ef343a779c121d4bce0106a5ee035a7d2dcc1f1a50c8f650130e09484fca7c0f3edf87952f7e53ecd80e7dbc0f3adf879ba38aa67a95aef77803daef52aadbe6b68f5a9a15531944186ef3ad0af00fccaba655efc7966cf1cc58ce7b6c29a80729f90308aed5bc0e3a2dd5075bf50af4bd6df2a4c9f1d53e7d7c5f312bc57dc4aaf5738c45f219499505257f6779aad08fe2fdb4dd5679f6173f40e7317db733b99177f4541d6eedd36782f19b570f1bc29d3e3fe3e0bcfd7f1f194e27e8ebef63aaa7b26cffef65a7862ac7b97a8e79e7be2af7baafde8acd725eb57fbe8bf1fe354f372dcf7a4fde86cd4b910ca0c28a92bfb1fd07ed8da0ad7fba69c939bfb668ba0ae3d13ae126d379f097daded52ee63288f6d4e85fec5fdb302eaeaaa5d8cbac784eda2d976bbd4de7c2e69fa2e065d3e26d5ccf69c0275acb470571270633c66733f9375db9e91551a3ab26986dbfa638b8e7d2cdc7d08b819f7eb3e868e6c9a1d6cbf1e68e11e48c0cdb85f0f347464d3ec60fbf5200bf720026ec6fd7a90a1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf8705f57564d3ec60fb759585bb8a809b71bfae327464d3ec60fb75b585bb9a809b71bfae367464d3ec60fb758d85bb86809b71bfae317464d3ec60fbf5280bf728026ec6fdbab1fdf659f7eb5a0b772d0137e37e5d6be8c8a6d9c1f6ebf116eef104dc8cfbf578434736cd0eb65f4fb0704f20e066dcaf27183ab26966dbaf1dbd4b98f1bb8dfb9dea931e637a7f063c1f018f8b98721407a58efab9a4faa6ee31b4da6f68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4918c586cfa45cdce75775bf48af4bd6df2a4c038eabf3bb3776bf65a50586bf247088bf422873d2e975656fd46c45c181db0dc7e2c66db93bf63aa4b7a519ff322ffe8aa03e7b80c7c1fbf9299ebd06cf5e8b16f8de693cbecb46b8d1b8ac547d1feff0a06e3bef36ea839a7e18bbfffa9a16189a7ee8d87722a8bf3d8501a724e491c7c5b36147f54cb505bb8c3a991a1743998e50cf5d0eea59007e65dd32bf0b78646a013cae62303078028b3e325592f14c21e31945c6731619cf10329e13c878ae27e3399c8ce712329e87c978cac978c693f18c20e3399d8ce756329ea3c978ae26e3b9888ca7908ca72f19cf54329e5e643cf790f19c43c633948ce702329e93c8786e24e34990f15c46c6f328194f1919cf44329e91643c1dc8786e27e339968ce75a329ed6643c49329e07c8787a90f19c47c633968ce75c329e61643ca790f1dc4cc67304194f3b329e2bc8781e23e3a920e3b9908c673219cfdd643c6792f1dc41c6534ac6733c19cf75643c9dc9782e26e36943c6f310194f37329e5a329e2a329ed3c8780692f19c4fc6731419cf55643c2dc978fa90f1dc47c6d39b8c6734194f27329eb3c978ee24e339918ce706329eb6643c9792f1ec21e379848ca72b19cf04329e6a329e7d643c25643c83c8788e21e3b9868ca715194f3f329efbc9787a92f18c21e3e948c6731719cfc9643c3791f11491f11493f15c4ec6338d8ca70b19cf24329e1a329e33c8780693f11c47c633808ce730329efe643c0f92f17427e31947c6339c8ce754329e5bc8788e24e3694fc67325194f01014f2238f05b4c09f8ff5eb0c937833e025b0bcbfae439b59457c7c5451d0e5c770bcbba3fb430a04e3ba12e499d2ffd66534a27f4958479f157041c1f92f05c49c6d39e8ce748329e5bc8784e25e3194ec6338e8ca73b19cf83643cfdc9780e23e31940c6731c19cf60329e33c8786ac8782691f17421e39946c67339194f31194f1119cf4d643c2793f1dc45c6d3918c670c194f4f329efbc978fa91f1b422e3b9868ce718329e41643c25643cfbc878aac9782690f17425e379848c670f19cfa5643c6dc9786e20e339918ce74e329eb3c9783a91f18c26e3e94dc6731f194f1f329e96643c5791f11c45c6733e19cf40329ed3c878aac8786ac978ba91f13c44c6d3868ce762329ece643cd791f11c4fc6534ac6730719cf99643c7793f14c26e3b9908ca7828ce731329e2bc878da91f11c41c6733319cf29643cc3c878ce25e3194bc6731e194f0f329e07c87892643cadc978ae25e339968ce776329e0e643c23c9782692f19491f13c4ac67319194f828ce746329e93c8782e20e3194ac6730e19cf3d643cbdc878a692f1f425e32924e3b9888ce76a329ea3c9786e25e3399d8c670419cf78329e72329e87c9782e21e3399c8ce77a329e13c8788690f19c45c6338a8c670a194f25194f0b8307ffafde0ddba3f3f2eda042f8ff44ddb9bc9d5e97949167c4ea5ec507864dd57787a3fa7e10d44d4998df01f515f60f80e703473c3b0d1ed37711e42b41b3ed864d316e73c4b8dd6094f96dc028fa6d079eed8e7876183ca6ef22c8f701cdde376c8a71ab23c6f70d4699df0a8ca2dffbc0f3be239e6d068fe9bb08f20341b32d864d316e76c4b8c56094f9cdc028fa6d019e2d8e78b61a3ca6ef22c80f02cdde336c8a719323c6f70c4699df048ca2df7bc0f39e239ecd068fe9bb08f28341b38d864d316e70c4b8d16094f90dc028fa6d049e8d8e7836193ca6ef22c80f01cdd61b36c5b8ce11e37a8351e6d701a3e8b71e78d63be2d960f098be8b203f14345b6bd814e31a478c6b0d46995f038ca2df5ae059eb88679dc163fa2e82fc30d06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4ab41b3e5864d312e73c4b8dc6094f965c028fa2d079ee58e7856183ca6ef22c8d78066ef1a36c5f88e23c6770d46997f071845bf7781e75d473ccb0c1ed37711e44781664b0d9b625ce28871a9c128f34b8051f45b0a3c4b1df1bc63f098be8b205f0b9a2d366c8a719123c6c506a3cc2f0246d16f31f02c76c4b3c4e0317d17417e3c68f6b661538c0b1d31be6d30cafc426014fdde069eb71df12c32784cdf45909f009abd65d814e39b8e18df321865fe4d6014fdde029eb71cf12c34784cdf4590bf196cc2db1b6c6fe87c2fb0bdaef33dc1f69acef700dbab3adf1d6cafe87c37b0bdacf3e5607b49e7bb82ed459d2f03db0b3adf056ccfeb7c5fb03da7f3fdc0b640e793609baff3fdc1364fe72f06db5c9dbf046c7374fe52b0cdd6f9cbc0364be72f07db4c9dbf026c3374fe4ab04dd7f9abc0f6acce5f0db66774fe1ab03dadf3d782ed299d1f00b62775fe3ab03da1f3d783ed719dbf016cf7eafc8d60bb4de76f02db7e9dbf056c9fe8fcad60fb54e76f07dbb774fe0eb07d5be7ef04db7774fe2eb07d57e78783ed7b3a3f026cdfd7f99160fb81cedf0db61feafc68b0fd48e7ef01db8f757e0cd87ea2f363c1f6539d1f07b69fe9fc44b0fd5ce72781ed173a3f196cbfd4f92960fb95cedf07b6cf747e2ad87eadf3f783ed373aff00d87eabf30f82ed773aff10d87eaff30f83ed739d7f046c5fe8fca360fb83ce4f03db973aff18d8fea8f3d2aea976f64f3a5f12c4dbce7e15d44d25e05bfca9327fd6f9d6461959b610ca9ca33b14aa671cea5ba6d20e4bbbac6cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8a41d7e116cd20ebf003669879f079bb4c3cf812da9f30bc026edf07cb0493b3c0f6cd20ecf059bb4c373c026edf06cb0493b3c0b6cd20ecf049bb4c333c026edf074b0493bfc2cd8a41d7e066cd20e3f0d3669879f029bb4c34f824ddae127c026edf0e3609376f85eb0493b7c1bd8647ff90a6cd236ef079bb4cd9f804ddae64fc1266df3b7c0266df3b7c1266df377c0266df377c1266df3f7c0266df3f7c1266df30fc0266df30fc1266df38fc0266df38fc13656e77f0236699b7f0a36699b7f0636699b7f0e36699b7f0136699b7f0936699b7f0536699b3f039bb4cdbf069bb4cdbf019bb4cdbf059bb4cdbf039bb4cdbf079bb4cd9f834ddae62fc0266df31fc0f698ce4b5bdd066cf2ac584da5df70c271785a802f614906f1b6fd3825218f7597a9928c673619cf28329e57c878ce22e31942c6730219cfe1643c6f91f18c27e35940c6b3948c670919cf9b643ca793f1ac27e35947c6733419cf07643c3bc8782e22e32924e39949c6f31219cf39643c43c9782e20e339898c2741c6338f8c673119cf22329ed7c9783a90f1ac25e35943c6732c19cf76329e6d643cadc978be22e3994ec6731e19cf0b643ce792f10c23e339858ce708329e76643c15643c1792f1cc21e3799b8c672119cfab643c6792f1ac26e35945c6534ac6733c19cffb643c5bc9783a93f1b421e379868ca7968ce739329e2a329ed3c8780692f19c4fc67314194f4b329e3e643cb791f1cc22e379998ca71319cfd9643c2bc9785690f17c49c6732219cf16329ecd643c6dc978f690f14c20e3994fc6534dc6f30619cf3e329e12329e41643cc790f1b422e3d94fc633838ce745329ee5643ccbc8784e26e3798f8c6713194f11194f3119cf5c329e1a329ed7c878ce20e3194cc6731c19cf61643ccf92f13c4fc6f32e19cf3b643ca792f16c24e3d940c67324194f7b329e5d643c3bc9780a087812c011804dfedf126cf21d9e7d60fb42e7f7804dbee1f316d83ed7f9c7c0f688c5d6c2c2270cd3c026efca7e0136b93ff328d8e49d89cfc126e70de25fcdafe870207f0b5846fcb4b4f0a3bfcf2d5c92c7ed2dcb248378b737fa4a06f66fde15188c879a672719cf2e329ef6643c4792f16c20e3d948c6732a19cf3b643cef92f13c4fc6f32c19cf61643cc791f10c26e339838ce735329e1a329eb9643cc5643c45643c9bc878de23e339998c671919cf72329e17c9786690f1ec27e36945c6730c19cf20329e12329e7d643c6f90f15493f1cc27e39940c6b3878ca72d19cf66329e2d643c2792f17c49c6b3828c672519cfd9643c9dc8785e26e39945c6731b194f1f329e96643c4791f19c4fc633908ce734329e2a329ee7c8786ac9789e21e36943c6d3998c672b19cffb643cc793f19492f1ac22e3594dc6732619cfab643c0bc978de26e39943c67321194f05194f3b329e23c8784e21e31946c6732e19cf0b643ce791f14c27e3f98a8ca73519cf36329eed643cc792f1ac21e3594bc6d3818ce775329e45643c8bc978e691f124c8784e22e3b9808c672819cf39643c2f91f1cc24e32924e3b9888c670719cf07643c4793f1ac23e3594fc6733a19cf9b643c4bc8789692f12c20e3194fc6f31619cfe1643c2790f10c21e3398b8ce715329e51643cb3c9782ac9785a5878f639e2916fc5c8ba657e5f33f7bdc3f0bd234f7c6f337c6fcb13df5b0ddf5bf3c4f766c3f7e63cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f73b86ef77f2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b61d2577997fe4dc0ff2b80f12d478cfb0c46997f0b18c586dfa3ae70c41375ed5e41e05b6921f7b2e4996702fe5f098cae62aac26094795b4ced009e4a473c51f71c2a097c2b2de45d6ce9539980ffe3f8cbae62aad26094795b4c6d039e3e8e78a2ee95f421f0adb490779fe59dbf04fc1fc75b7715537d0c4699b7c5d456e019e88827ea1ecf4002df4a0bf956987c932601ffc7f1195dc5d4408351e66d3185e3e70e72c413756f6a10816fa5857c6b57be799980ffe3f84dae626a90c128f3b698c2f1e3063be289baa73698c0b7d2429e05cb37da13f0ff21c0e82aa6061b8c326f8b291cef6688239ea87b8143087c2b2d86eabcf4b14ac0ff8702a3ab981a6230cabc2da6d601cf50473c51f7308712f8565a0cd37979872301ff1f068cae626aa8c128f3b6985a033cc31cf144dd7b1d46e05b6951a5f3abf56f02fe5f058cae626a98c128f3b6985a053c558e78a2ee195711f8565a54ebbc7c732e01ffc7f1df873962ac3218657e18308a6d05f0543be289bad75d4de05b6921dff65fae7f13f07f1c8fd5554c551b8c326f8b291c0fbac6114fd43dfa1a02df4a8b513a2f63c224e0ffa380d1554cd5188c326f8b291cbf7294239ea8670ba3087c2b2de4db5c4bf56f02fe5f0b8cae626a94c128f3b6985a023cb58e7816193c8b2c5a1c2adf4a0be9cbbd58ff26e0ffe381d1554cd51a8c326f8ba945c033de114fd4b39cf104be9516f26dedb7f56f02fe3f01185dc5d4788351e66d31b510782638e2897a0635210bbea39ea764c377d4b3816cf88ebacf9d0ddf51f76cb3e13beafe63367c47dd4bcb86efa8fb42d9f01d758f231bbea3aed7b3e13beada331bbea3aea3b2e13bea9a201bbea3ce6fb3e13bea5c2d1bbea3ce3b7c7beedbf3b87d1fca73877c6dcf0fe531f4501e4bfcb581bf36c8966f7f2cf1d706d9f29dafd706be3dcf7e7b2ed75f0541f4f5d83b8e7c2f317ccb3c3e6759e2c8f722c3b7cce33383458e7c2f347ccb3cdeff5ee8c877b1e15be61766c1773bc377bb2cfa6e6ff86e6ff1ed607b972582fad7dfc2805312f218036f3bd0c2513d4bd57a17eb757d1de37a6df76dccfda518ca2c06fd5cb71db26eb3edc845668c8b36f1f92e4d800ff92e99b2c9f3e337c026edfeeb60937e01af814d8e4daf824d9e49bd02367966f532d846e9fc7eb0c9b363ecb32fcfffb782ad4ae7b1aff8309ddf0c36e94b857d94a53fdc26b0499f46ec1b2bfd5237804dfa16639f4ce91fbe0e6cd2c71ffb02ca7b1a6bc026efda601f34795f6a15d8f6e83cf67d92efd0ac00db349d5f0eb63fe8fc32b03dacf3b781edf73aff15d87ea7f30bc1f690cebf0db6dfeafc62b03da8f32f81ed373aff22d81ed0f917c076bfcee3bb6cbfd6f99d60fb4ce7f11daaa93abf036cbfd2797c77e73e9ddf06b65feafcf3609ba2f3cf816db2ce2f00db2f747e3ed87eaef3f3c03649e7e782ed673a3f076c13757e36d87eaaf3b3c0364ee76782ed273a3f036c63757e3ad8c6e8fcb360fbb1ce3f03b61fe9fc9760bb47e71781ad85ce2f019b8c1989fd540a75fe1db0b5d279ec7f24dff79f00b6c3747e3cd8dae87c2dd8e4db70a3c026e341d7802da1f3d5602bd2f92ab0c9f9d930b0c9f82743c126e75243c076a4ce0f069b9cf70c029b8c6739106cf20dd23e603b46e72bc126dfd6af00db713abf0f6c32e6d85b6093efd6ed019b8cc5fc28d8e47bd5d3c076b2ceff016c320ecbc3603b55e77f0fb6d374fe7760936f783e04b6129dff2dd83ae8fc83603b43e77f03361923eb01b09da5f3f7834dc60efe35d8e47bcf9f81ada3ce4f05dbb93aff2bb0c95822f7814dc607fd25d83ae9fc14b0c977b82783ed429dff05d864bcbf9f834dbe313c096c32aedbcfc0d645e72782ad4ce77f0ab6ae3a3f0e6ce53aff13b075d3f9b160ebaef363c0d643e77f0cb69e3aff23b0f5d2796967d4feacf6f3bd7a3e19c4775ea6fc7d14d49f1aba361006e489f35cbb1878d0d7eed8eb5e963aaf97fdbe855eafc4d06ef0bd2b76dfe96b8a0ff5ba0af57a7719be0ba1ccb9ba7150cbc931bfa55e6e8fb11cdec79275cb3217817da7b1ee76babe1f3aaaef2e8349b851072973816652c7c61fe87c1b582646b6d4f5b1c45a001ae29484bc30b8d1aaac14cf7b1bc3f321f0ec8e9d277dbdee222670df8afb7addbc8f6bc65a3194d905faed74a01feeebb26e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f99915cf5e9dc7e7ca526e2f09a3d876038f8bfbfcf81c56d6af9eebec3cbdceefeed8fdd67fbed74aafb7d4a8732194f91a9e39edd1f922f8bf6cb7a86de9e0396183db52fc15417df059d05e473cbb0d9edd162d245f129befb2116e342e2b557d59d433f63d86ae7b2d9abada5f77eb7515189ae2fefa91c183cf468b80f763fd9b80f57c0c7570b08f371817e20ff7a5dd6093fc47c0e8623be3b144da03791e8ecfa6a5ccaf8ce7e2f16ffbb25297edc60750a76470607c174299df41dbf7b9ce63df90bda0db3f2cff97a9a1e7d4a29faaf3f6f8eb9cdabedb8033097ed0f7fbc01a93ef7aefd014e8247ec45e08f9bf437f0e29277a88d6c28ee39523bbb9dc47c672c5506687a5fec920defa6f3778b61bcc6a9b7c0971f60f38febb6a9376446874116824657683467b1cf1ec36788443fca932b2fd5b1b6564d94228f3bfa08d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf818705c1defeed87973abffd76125e95f6cd7e3eaff25eb6ea797158ec0587f29ac5fb85a07d1c796ffd9be2575eb77d9bf6c8f516761419da54cbb92f4af8ab3cb753e9373fd4375dd1675aebfc3014f22a87fedada6868eef788cf9c0018fa37a96da8e5d3b8d3a1543998e504f07e7310dbe0bbc1d7cbbd8e6a8859c43ed32b42884321d4ad2bfd27644e988d7aa1f66a52e65d6f3c1524b5da44cc792babab4017b9c4c2eb7dbfb5027b5dedd96ba4a990b4aea74e9acf309d84e78dfa48fe5ff3235d41ee0583c5be2af736afb6e06ce24f841dfef016b4cbeeb7d0b44cef7c58fd80b215f59525756ca891ea2b5b0ab7d44def9437673b95dc672c55066aba5fec920defa6f3178b618cc6a9b7429a9cb4b1cb96c37b74668540a1a4919bc7f2cc7767cefce76dcdfed883beab8bf1b18cd7613cf5d5cb2ed31d8cc7ba8b6f3412983e76452e69a92f4af6a671396b2e6bd6117f731f11dd400ea111875950963c0c1b561395e3b493b257e3a837db7ce8bce9d0ded0aa1ccc092f4afc3f36eebbd4bf3fa0eaf2984dbdcb7f0dd8fc12575dc3876e26efd5b04b64ff4afa3ebb472db3d43e1b0dd331c5652c78ecb0ad77e4b5dcc6be416c181f7d4bf36cae27db7869633f3e638944adf4f8c72363f78cd13dbbb1a5d4a4b91a94560bf5ff091c15e101c38e6a6ec071873e67d94cec67af03e4a6d49fa57da24b3acdaf6ff7e4c9d3eb21d453b6c4f30263f02c6a4ce977eb3a98badfe322ffe14e3c7461ddcb45de9f79532b90fbc07785cb4ed8edae8523cc6c6f77d8a5e55b6e3ff478656597c5e6b3de69bcfdcdb18f9787c9755dbee3fd9b4d865e171f51c254a8b5d16dff169d17d84edf861d362a785676796b5d869f11da3163578dfb3212d3eb0f0b8b817d590161f587cc7a7458fd2869e6ba0163b2c3caeee3d446921fe3265de49c0dcc6c8c7e3bbbcca769fcca6c5760b8fabebe6282db65b7cc7a74597ee788fae212db65978e2bf3fd7b016db2cbee3d3a2672fbc87d79016ef5b785c3dd38dd2e27d8bef18e362a4ed5e8e4d8bad169ead59d662abc5778ce787dd6df7da6c5a6cb1f038b8efdaa0165b2cbe63d46238de776d488bcd169ecd59d662b3c5777c5a5475b3dd13b669f19e85c7d53de1282ddeb3f88e4f8be13d95ef4d8dd0629385675396b5d864f11de335542a2e3636428b8d169e8d59d662a3c5777c5a54a7ceb53634428b0d169e0d59d66283c5777c5a94a68ea9eb1ba1c57a0bcffa2c6bb1dee23bc6b8485d4fae6b8416eb2c3cebb2acc53a8bef188f23a9b858db082dd65a78d666598bb516dff1695193baffb4a6115aacb1f0acc9b2166b2cbe63bce7928a8bd58dd062b585677596b5586df11d9f165d53c7d4558dd0629585675596b55865f11d9f162353cfc45636428b95169e9559d662a5c5778ce79da9f6624523b45861e15991652d56587cc778de99ba7fb1bc115a2cb7f02ccfb216cb2dbe636c3b53e79dcb1aa1c5320bcfb22c6bb1cce23bc6f3ce9416ef36428b772d3cef66598b772dbe633cef4c1d47de698416ef58785c8d8112a5c53b16df31c645aaed5cda082d965a789666598ba516df31ded74ab59d4b1aa1c5120b8fabf11aa2b45862f11de3f548ea1edfe24668b1d8c2b338cb5a2cb6f88ef15951ea1c7c5123b45864e15994652d1681ef3db1fb4ef7e7161fd217eb42438b4228735a87f4aff4c58ad251d681fdcab02e6fc75e9774bfb2851175791bea2265ce82bab4099c8c5154eea8aea998790beaa4d6fbb1a5ae52e6bc0e75ba74d2f9046c93fda05b6fcbff652a30e6939017fd549ddf88bfcea9587d1d3893e0077dbf06ac31f9ee82be0b74123f622f847caf0e7565a59ce8215a0bbbda47ded4796437975b642c570c65deb4d43f19c45bff370c9e370ce6d47b0f106712476edaae34d39b111a5d081a4919ecb3f7b1231eb30fa170883f5546b67f6ba30cf6a1943217431b85fd4aa59e89e0c07e938edab22ec82eeb9679f1570cb63dc068d651c5c767d0f753c68a907124944dc685e80aebe961d8545d7b3aaaabf89275cb7c4f6094712a7a649fb1acb18cdd0d46c5d3db816638f6864c0d1d2f7a034f2f073c8eea993a0e551875ea69d4a918cae0bb8d150eea59007e65dd325f01be5d6c73d4428ec9e7195a14429961c6f963948eb20e15bf3d2c75e9ebb82eb26e6997fa66c177a5e1bb9be13b11d4dfce41d0f0fe5509cc7d1c30abf5f68b7fbda578de2631257eba419dfa830671d509d725e779fd0d6d0b213f05cef3a49c9495e397b0ab58966d89ece672bd8de58aa14c5f4bfd9341bcf5ef67f0f43398d536b907ceed1cec0fa918e86b70c87c37d0ae5f84767d413b2983c7bfee8eb4eb63f0c87c77e091739c0ab0c9b982f027e0ff5db3c06db67b15166eb1e13871dd2d8cdde2674c9deb74371865be1b308aad0ff0543ad2ccdcd6e719fae071b9b55146962d843233e1d898b09455fb5dc782ba7ab5d4f6d8de1dd36d7a6b077ae1388d01e813181a06a097d4b395039eb641dd588d9326d74e1c7ef7c89b46a61f3d0a5aa18189bf05966ab4001be65b5a6c41507f48ca42b0c99094adc0d6c2900587c294f232a49d0bb9500f5977a1c1d90658e2f48dc379cad450e81c063c2e4259858e0ce9a943e7b689a3278fc4f8686570362576d4ff5a36502e6a5daeb683b94f2461de8cc14247fe5b427d93302ffed4b629d6f9f1c347dcdb7fe2dd53c68e1c3779120a65eed8982f08ea6f00f3374a70573b1d060056181b875646bdb0c190ffc986691b3f67398e996b6a13803f99da826e873bd04dad5fc6be1d317ccc981ba6548d193de2f229e3464c1e5d3b0eb7661b43b9a82d2dff6f0d365b138f65d584cd162e7b98c5669b7094e136609323d7e160139eb6606b0979296f6e1927e1da11d62fbb94fa9f12a795aef861415d08c8e158b5ab6aff559f8f55a7416aa86335b4b1da9c6ae86275c7500d4dacbe62a7861e56430daba1854f0ad24307aba1824f0dd24301abaf5d9404e9a17dcf08d243f79e15a487e63d07f8be0dcce706e9d32e35b46ea7203d74aeba75a95e5d579f7953efd6abd377755b409df2aa4b3c75faa94e3bd5e585ba7da16e65a9533a75baac4e05d5e99bba1ce9a7b5ee1fa68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc3744d98ae0dd380305d17a6ebc37443986e0cd34d61ba394cb704e9e19d6f0dd2c3afabe19f6f0fd24343df11a4878dbe33480f297d57901e6e7a78901e8a7a44901ea67a64901ec2faee203dbcf5e8203d4ceebd417aa8ddb1417ab85e351cb61a265b0d9fad86f9554302ab2185d550c36a58623584b11a02590d8dfc60901e72590dd9fc48901ef6795a981e0bd3e3617a224c4f86e9a9303d1da4870757c3864f0fd2c38cabe1c76705e9e1cae704e9e1cdd5b0e76a3874354cba1a3e5d0dabae867957c3bfab61e15f0ed32b617a35483f92508f62d4230a75fb5f3d0653b7a8df0ed2b7ce1707e947dcea91bfea02a1ba84a82e32cb8374172ad5a54c75b1535d0e55174cd5255575d1555d9655176ed5a55d75f157af3ca85740d42b31ea1521f5ca947a854cbd52a75e3154af89aad72ed56bc4eab5eadd41fab6f8de20fda854dd0e578f06d42d7375fbfed3307d2b48c7e477c2f4dd307d2f4cdf0fd30fc2f4c3203dacb11aee580d97ac865656c330ab219bd550ce6a2868356cf467417ae8693574f56f83f490d8bf0fd3e761fa22480faffd6598fe18a6afc2f4a730fd394c7f09d35fc3f4b730fd4b98fe354cff16a6bf87e91f61fa675037cc36362427e9d6475fc104c3274f1e3976fce492c9b52563a78c993c7afc98074aa68e9e3caaa4f6be91136bc6d44ec585bfad179631c2fb4f9c38fc8192d1e3aa47de5f523b6572496d4d4955ed9471d5f50ee27fd10b9d72a0c7e1d5d5d1cefef39b90fedf263a3d5cb78b32fafa550dd7ada865130439aa290b756fd9b40a4dd44730b9d4bd397d1e5c32694cede492d29271e1dff0c05b3b756475e712fcdfa450e449934b264d1e3e717249cdc4dab1255d3ae37a1f6ddb844afc575b3730679fd434713aeaef2c3529c47e797a1314f88fd39b46dabae41b90b62d699ad3929226d4f09ca62c747513096f29899465d294aac913878f981cbdf0eddf64e1bb9a52cd714dace6a91d9ae0eccca62cd4bf43d308ef6a8ab31919380bfe1b91390b848c550600", + "bytecode": "0x1f8b08000000000000ffed9d777414c7dae65b2030782404ced9c2e13a60632144163038e78c8d31c62004061b104118e76c72748e6072ce064c30068cb1af6fced9e95edfb0e7ec7e7b76ffd8ef3bbbebddae997a3f3d14d58346ee1a1e69aacf294df5abea7e7ff5f4dbd5a9baab20484fff0a5381ce370fd379c1e193fc3fa97fcbbedfd429c67595b9e42c68249ccd1a0967f346c259d848385b3412ce968d84f39846c2d9aa9170b68e91b300f85cf11edbc878138d8cb728681c715bdc4838db3412ce9246c2d9b69170b66b249cc73512cee31b09e7098d84f3c446c2795223e13cb991709ed248384f6d249ca73512ced31b09e7198d84f3cc46c2795623e13cbb9170963612cef68d84f39c46c2796e8c9c1d8053eee59faf7f7fa07f2fd0bf17eadf8bf4efc5fab783ae63a19ebf244c9786a963982e33fea7845137f4cbc3d4d9f85f4598ba84a96b98bae9ff95eaff750f538f30f50c53af305586a97798fa84a9afd6a35f982e0fd31561ba324c5785e9ea305d13a66bc3745d98ae0fd30d61ba314c3785e9e630dd12a65bc3745b986e0fd31d61ba334cfdc3745798ee36580684e99e300d0cd3bd611a14a6fbc234384cf7876948988686a92a4cc3c2541da6e1611a11a607c234324ca3c2f460981e0ad3e8308d09d3d830d584695c98c6876942982686a9364c93c2f47098261b9a3d12a647c3f458981e37389f08d393617a2a4c4f87e999303d1ba6e7c2f47c985e08d38b619a12a6a9619a16a6e9619a11a699619a15a6d9619a13a6b9619a17a6f9617a294c2f87e99530bd1aa6d7c2f47a98de08d39b617a2b4c6f6b16d911de09d3bb615a10a685617a2f4c8bc2b4384c4bc2b4344ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2b4394c5bc2f47e98b686695b98b687e98330ed08d3ce30ed0ad3ee307d18a63d61fa284c7bc3b42f4cfbc3f471980e84e993301d0cd3a761fa2c4c3f0cd3e761fa91a1f98fc3f49330fd344c3fd3b69febdf5fe8b2b2cfff52fffe4afffe5afffe46fffed628ff3b63fef7c6fc1ff4ef1ff5ef9ff4ef9ff5ef5ff4ef17faf74bfdfb95fefd5aff7ea37fffaa7fffa67fbfd5bf7fd7bfffd0bfffd4bfeaf9dfdbedd3f95641dd940c626a932a860f55f7ff456cf3f9a27a76d55cff4f7e4bb5bd50cfcb6f81b6b7d0f32d0c7b4b3ddfd2584f2b3ddfcab0b7d1f36d0c7b5b3ddfd6b01fa7e78f33ec27e8f9130c7b7b3ddf1eec09fdbf74c5d23fcad65c9b0ac026f1d90c6c2db4ad39d85acaeac0768cb6b5009b6cdf96606bad6dc780ed586d6b05b684b6b5162dc354a46dc920ae58291baad65b1cf77af5339336f1f356a9f59638e26d1b3fef30b5de760e78557c1ca7d7550c7173bcb6b501db09da5602b613b5ad2dd84ed2b676603b59db8e03db29da763cd84ed5b613c0769ab69d08b6d3b5ed24b09da16d2783ed4c6d3b056c6769dba9603b5bdb4e035ba9b69d0e36dde4066780ed1c6d3b136ce76adb59603b4fdbce069b9ce395824dcef7da834dcefdce019b9c079eab6daaed685d00feb45ddaad943f69b3c1f60369afc17681b4d560bb50da69b05d04bec57631b43562eba06dd26ea9fff5d4f96410d77e529eda4f7ac5bdde70cd6abdbde35f6feaf95d9fa04eeb24f8e9055af5d5f918fbb67442df726e237ec45e08f9eba1ac94133de4d823ecea1853a9f37d332cd7d358ae18ca545aea9f0ce2ad7f6f83a7b7c1dc02f26e62b673998fd97a4f59c7ec00286bc69e9c0735c598bd09381cc46c858fd97a4f59c7ec08286bc69e9c0b37c598bd17381cc46c7737315b5ee663367d6f2c08ecb127d7434d3166470147fc31dbc5c76cfda7ac63f639286bc69e5c1337c5989d0c1cf1c76cb7eefedca0de53d6313b0fca9ab127f7679a62ccbe081c0e6276986f67eb3d651db30ba0ac197b72afb029c6eccbc0117fccf67014b39d7dcc06e9e79c41608f3db96fdd1463761170c41fb3c3fcfdd9fa4f59c7ec4e286bc69e3c43698a31bb41e7d573869febe70c6780ed17da7626f0c61fdbd5e58e62bb938fed74ff8f20b0c7a83ccf6b8ab1fd91ceab38fe15f44710dbafa5af02d87ea36de780edb7da762ed4cbc13ed0cdef03f5af53b6fbc09fa1ac19cbf26cb929ee03bf000e0731dbddc76cfdeb946dccfe17286bc69ef473688a31fb25703888d91e3e66eb5fa76c63f6dfa1ac197b17ea7c538cd9ffaaf3ea7ce18ffa7ce162b0fd49db3a80edcfda7609d8fea26d9782ed0b6deb08b62fb5ed32b07da56d6560fb5adb3a81ed1b6d2b07db5fb5ad33d8fea66d1560fb56dbba80edefdad6156cffd0b66e60fba7b67507dbbfb4ad87b6a9e75dd2f7eaa0b6b502fe6410efb6957e97b26e99ef9403df2586ef921cfa6e67f86e67f15deec077027cc85460cc27215fee96a7ac1878d05745fcbe3aabba770eea5ff70ae0e9e2a0ee09f0511f9e2ec0d3357e9ed4f1b35bfceb4d6de3ce86a609f0d519ead5dd41bd0ac097ac5be6c55f31d8b06ded6e61ec113f637901f89275cb7c0f60141bb6f5f22e95ec3fea787841411daf837d29754e24fee4db55c251017629d3a97d1d5b07cd5604ffc7e35e57c3e6282e537121be64dd322ffe8aa03e5d73cf585e5fc62e06a3ab36a2007cc9babdefbaed20793c8ebbb8d6b1b569e2bb570e7cf7307c5718beb1ed9429d3b1ad0730c77ecda98f6d95f1afb70caf4fe4da50fce0f9035ec3c55527f42dd786e247ec8590bfb9a0aeac94133da41d167615cbb22d91dd5caebbb15c3194e965a97f3288b7fe95064fa5c1acb6c915702c74b03fa462a097c121f315a05d658476bd403b29732168e7aa3deb69f0c87c57e09176ac1bf0b8ba268ae2c9c5f5d8917ce3392c5e3fcbfff13cc0d5f6ea6430cabc6d7bf50046dbb98a83eb998ce72a5d80516c3d81a7b323cda2b66b6712df0e6225d51e890f393797fdb72bd8a54c0ffd429d6a2b1f84b6d2458c603cca54df6bdef8b75379ea1abc4b163cb8ed1c5c577572148f6578ffe6bb20de5833dba52e865651f7785cb5e59d0d1e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f17912f6db92725d4918cdfe6faeeef3a7be61a8d725eb57cf75feb7d3fe60e565d83f46fa415c6cd4b910ca1437ab2bfbffa03f98f99c0afb487675ab5d6a5b627fcc24cc8b3fec6b85db92a1bf53696cbed3dfa274f1bc4d7d034c7d47d3ecfbd9d5a2a98bfecfa86981a129f6c7bfc4e051715ad9bc8ecdc5b3bf6c9f45a256928ff3d95e71608ff5f8b74bf921cfac9b0587b61f789c71d57f47da6a795edecbf05d08654e6f56b76da46f958c33dbd9580efbfdc8ba65998bc15e69acbb442f2b1c2d8cf5778365a5cc59d0a6ee6b56a79983b6b23cdbbeebf8dc3cfee370fa397ee72c783a018f8b76c6d1f9c621df5b8dfb39bed93fcd761e2365b06f9f837e9519fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd7569030e6a8ef43ea79867cab4cd69ffa5e70b33abfae9fc3c933a70e469df1ddd1ffdeacaeec169d2f0a0eefef10b52d5d7d9f226a5b8a3ffcf60c3e0b72f15cb7007cc9bacb2d5a48be3436dfe5cec68690e7f89d0d5d2b2c9abada5ff1192b6a8afb6b1783079f8d467ddba7dcb0b9ec3b141517e20ff7a572b0491edf8f76b19df15862f6eb117ff8fcfa475adb92c0d5b62f2f73d96ee0775392c1e1f18ddf53f939b47dbfd479ecc3817d47beb6fc5fa64ccfa9453f556707dfd72c2b8075c9f6b57ddbb31fb0c6e4bb13aeab40a77e86068590ffaa595d59292765456b6157fb887c0306d9cde5ba18cb1543993e96fa278378eb6f7e6bb5afc1acb6c96f20cebe86e3bfab36a94f84461783465206cf835cf5c933db48b37f23f6db6b6994c1731629f32f68a3a2fa8fdafa1cba3a8e45f539b49d1b770246b38e663fcf7cefa7f51fd05ec4dd4feb3f2086b09f5660acbf03ac5fb85a06d1c71629f37f8df59be7e4b20cf603fbcffe4ff03d97729dcfe69cfc685d5fd9cec971b9a8ba2b66fc0e5a3246668c0964c1f3042973acd65ab6596504770fcbb2c511cb8a56e6b7c28a82c3f573f39db5f43edfd7a88bc4357e835cca1c0f757173de923e0774f54db924d449e5cb2d759532a7c0be769ace27603be17e7b91e5ff32653a07c431dc2f8fbfcea9ed7b057026c10ffabe125863f2dd097dcb39a0f8117b21e42f6c5e5756ca891ea2b5b0ab7d44cea390dd5cae97b15c3194e967a97f3288b7fe971b3c971bcc6a9b9c09717611f44377d556f78bd0a803682465f09ea2ed3ba0b6638cabbefd51c798726034db4d3c4eba6433df1332efabd9ce11a48c2c8be708dda09d4d58ca9af70be5781967bf617c57a21bf8c577255c7dbbb927e89684793c2f389abe5d7cc756f98b1a33a1670e7c478d99900bdfed0cdfed72e8db6bee3567d2dcc11804a9f7cff09ba56aca745e8ae312c872cd80d1c5580e89e0d06f8f1f8911c77790e59a03a38be343b6df3eef068cb25c2130ba78b714c7dfa80f237e63188ff3c2e8e05bb19d1afaad58bca7d7121899ded9c46753c700a38b7ba80d7d570fcfe75bc1afab71893a67c188e7f3b25c6b6074716f1c9f0dd68711af8b64b96381d1c533ac6cc777c26fcfe3bd65978c998eed8efba294677befa5d22d4fc6730df4ed605cc39416789ff1485af476cb93f1dc077d3bb8ef97d202c7193c9216f86cd0c5b88789e0d0e77047e2c1e797b2dc71c09874c4d8370bc62430fee7bd6260ece788319905633f6014fb09c0e8e0fe6b8ab15f168c789f52963b1118af70c47879168c5700a32c771230bab8979a00bff561bc121865b99381f12a478c5766c1781530ca72a700e3d58e18afca82f16a6094e54e05c66b1c315e9d05e335c028cb9d068cd73a62bc260bc66b8151963b1d18af73c4786d168cd701a32c7706305eef88f1ba2c18af074659ee4c60bcc111e3f55930de008cb2dc59c078a323c61bb260bc111865b9b381f126478c3766c1781330ca72a5c078b323c69bb260bc191865b9f6c0788b23c69bb360bc051865b97380f156478cb764c1782b30ca72e702e36d8e186fcd82f1366094e5ce03c6db1d31de9605e3edc028cb9d0f8c773862bc3d0bc63b805196fb0130dee988f18e2c18ef04c63b2c8cfd1d31de9905637f6094e52e01c6bbe2674c5d4bf7cf82f12ee0b93b7e9e94667765c173b75b9ed477f5eeb2f8ba277e5fa96d3120a87fddef019e81f1f3a4b6c53d59f00843312c879add1b3f634ab3815930de0b3c83e2e74969766f163c8340b37b2d9add173f634ab3415930de073c83e3e74969765f163c8341b3fb2c9add1f3f634ab3c15930de0f3c43e2e74969767f163c43823acdeeb76836347ec6946643b2601c0a3c55f1f3a4341b9a054f156836d4a2d9b0f819539a5565c1380c78aae3e74969362c0b9e6ad06c9845b3e1f133a634abce827138f08c889f27a5d9f02c78468066c32d9a3d103f634ab31159303e003c23e3e74969f640163c2341b3072c9a8d8a9f31a5d9c82c184701cf83f1f3a4341b9505cf83a0d9288b660f39627c300bc6872c3c717f27fb418baf318eea3e3aa87fdd85a11896c37e12631d318ec982712c30ca72d84fa2c611e3d82c186b8051964b3866ccd44fa2067c8f8bdf77aa5daa09eaafcf38b73c19fb49a0eff18eb41817d45f8bf16e7932f69340df131c69313ea8bf16138067a2032d12e0a33e3cc2500ccb613f895a478c13b360ac0546590efb494c72c4589b05e3246094e5b09fc4c38e182765c1f83030ca72d84f62b223c687b3609c0c8cb21cf69378c411e3e42c181f0146590efb493cea88f1912c181f0546590efb493ce688f1d12c181f0346590efb493cee88f1b12c181f0746590efb493ce188f1f12c189f0046590efb493ce988f1892c189f0446590efb493ce588f1c92c189f0246590efb493ced88f1a92c189f0646590efb493ce388f1e92c189f0146590efb493ceb88f1992c189f054659ee21c78c99ae5f9e6de2bea3ae559abaefa8eb92a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3fe7c077027cc85460cc27212f0cc5b0dc439eb14933224f697c3c655877f4f53c41dd9fb7f01438aa3bfa7a81a0eec2d0d8189f6b048c0f350246af63ba0f62431815cf8bf0ff648c3c2f64c1f322f04c71c4f362163c5380676afc3ca9989a92058f3014c3720f3502c6e71a01a3d7d1ebc8c4e875cc1f1d3da367f48c9ef16830368636dc33368a782c6f28a3e299163f4f4ab3a959f04c03cd64b9bb1b01e3f38d80f139b78ce50d65543cd3e3e74969362d0b9ee9a0992c77b75bc6f286322a9e19f1f3a4349b9e05cf0cd06cba4533078ce50d65543c33e3e7496936230b9e99a0d90c8b660e18cb1bcaa87866c5cf93d26c66163cb340b39916cd1c3096379451f1cc8e9f27a5d9ac2c78668366b32c9a39602c6f28a3e299133f4f4ab3d959f0cc01cd665b3473c058de5046c533377e9e946673b2e0990b9acdb168e680b1bca18c8a675efc3c29cde666c1330f349b6bd18c95f1a146c0f85c236074ac6379431915cf7c473cf3b2e0990f3c2f39e2999f05cf4bc0f372fc3ca9987a290b1e612886e51e6a048ccf350246afa3d79189d1eb983f3a7a46cfe819b3637cbe1130fa6ded1959191d5c5f657c17e9a526ee3bea5da4a6ee3bea5da4a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbf12bfeff26cbf31f30af0b8f8e68da37a96a9f5beaad7f55d8cfa29ad5e33b47ac9d0aa18cabc0afabde640bf02f02beb9679f1972df30504cc8e7c97b709d7d11aea2f3e9e33f450fe5f7754f7a8b6fef526ee3baaad6feabea3dafaa6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc537e65b0475e7edf2fd53b58e3774be50cf4bf9e7c12e651e3f26fd5b12f87dc8856fbf0ff963453ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c633c8ccf014f60f0041978a691f15493f10c20e3b9818ca72f19cf7c329e47c878ba93f18c26e3b99f8ce776329e67c978ae26e3799a8ca71319cf44329ee9643c23c8780692f1dc44c6d38f8ce731329e4bc978ba92f18c25e3194ac67327194f1919cf8b643cd792f1e4e2fda56c783a92f15492f14c22e39941c633928ce722329e41643c1792f1dc42c67305194f1b329e12329e0a329e27c878c691f10c23e3b98b8ce77a329e3e643cf3c8782693f1f420e39949c6f32019cf14329ec1643cb791f15c45c6733119cf53643ce5643ccdc9782690f10c27e3b9878ca70319cf8d643c49329e47c978ba91f1cc22e31943c633848ce70e329e17c878ae21e379868ca717194f2d19cf03643cf792f15c40c6733319cfe5643c45643cc5643c5dc8781e27e3994dc65343c633958ca78a8ca73f19cf75643cbdc978e692f13c4cc6d3938c671419cf7d643cb792f15c49c6731919cf93643c6dc978da91f17426e39943c65340c093080e1fc32401ff7f056ccd8c65d5675f6bdbd7fdff4d6d6f06cbbca5f3cd2deb7e136cf22dd9b72ccba24e6f425d923a5ff6fda6944ee82b09f3e2af0838de22e19943c6d3998ca71d194f5b329e27c9782e23e3b9928ce756329efbc8784691f1f424e379988c672e194f6f329eebc878fa93f15491f14c25e3a921e3994dc6f338194f17329e62329e22329ecbc9786e26e3b9808ce75e329e07c8786ac9787a91f13c43c6730d19cf0b643c7790f10c21e31943c6338b8ca71b19cfa3643c49329e1bc9783a90f1dc43c6339c8c6702194f73329e72329ea7c8782e26e3b98a8ce736329ec1643c53c8781e24e39949c6d3838c673219cf3c329e3e643cd793f1dc45c6338c8c671c19cf13643c15643c25643c6dc878ae20e3b9858ce742329e41643cf23d4f169e91643c33c8782691f15492f17424e379858ce75a329e17c978cac878ee24e3194ac633968ca72b19cfa5643c8f91f1f423e3b9898c672019cf08329ee9643c13c9783a91f13c4dc6733519cfb3643cb793f1dc4fc6339a8ca73b19cf23643cf3c978fa92f1dc40c633808ca79a8c671a19cf780bcf2b8e78e47d7759b7ccbf42e2dbc1762853eb7ddb519dded1eb6aa1d72bfce2af10ca4c3d36fdab9e0fe1b2c2657e9f00efc5bd031abde3a82eb23d0a8ced83bedf70e4dbfc5eb3ccbfd1c47d9718be4bf2c4773bc377bb3cf1ede3dcc7793ef8f671eee33c1f7cfb38f771cee4dbc1b541397e274da602633e0979bc5e70f17d3947f53ce43af1bb18f5535abd6b68655e5b154399b741bf771de867bbf69479f1972df30504cc1817a541bc71b120fe3a95ab7e99ad41d70586be58af858e348d3a862c6ce2bea38e214ddd77d431a4a9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fd9ecec778dd58863ed4f345b91e780ffc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732cd12e9df92c0eff32e7cfb7dde1fdbf2c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b73332ffdc52f043657fdf9a3623117ef121c4ddf51b1d8d47d47c56253f7ede3dcc73993ef250e7c27c0874c99faf82d019e450e781cd533f56c63a951a7578c3a1543193cc62f7550cf02f02beb96f9a5c023d378e0711107f5d9e6c8338d8ca79a8c670019cf0d643c7dc978e693f13c42c6d39d8c673419cffd643cb793f13c4bc6733519cfd3643c9dc8782692f14c27e31941c633908ce75d329e9bc878fa91f13c46c67329194f57329eb1643c43c978ee24e32923e379918ce75a329e8e643c95643c93c8786690f18c24e3b9888c671019cf2d643c5790f1b421e32921e3a920e379828c671c19cf30329ebbc878ae27e3e943c6338f8c6732194f0f329e99643c0f92f14c21e3194cc6731b19cf55643c1793f13c45c6534ec6d39c8c670219cf70329e7bc8783a90f1dc48c69324e379948ca71b19cf2c329e31643c43c878ee20e379818ce71a329e67c8787a91f1d492f13c40c6732f19cf05643c3793f15c4ec65344c6534cc6d3858ce771329ed9643c35643c53c978aac878fa93f15c47c6d39b8c672e19cfc3643c3dc9784691f1dc47c6b3908ce756329e2bc9782e23e379928ca72d194f3b329ece643c73c8780a087812c1e1effe27e0ffef824dde517f056ccb747e11d89a597c34d7f9a5602bd47959c731617abafde1eb469d5cbd978fbe92302ffe8a80631909cf1c329ece643cedc878da92f13c49c6731919cf95643cb792f12c24e3b98f8c6714194f4f329e87c978e692f1f426e3b98e8ca73f194f1519cf54329e1a329ed9643c8f93f17421e32926e32922e3b99c8ce766329e0bc878ee25e379808ca7968ca71719cf33643cd790f1bc40c6730719cf10329e31643cb3c878ba91f13c4ac69324e3b9918ca70319cf3d643cc3c9782690f13427e32927e3798a8ce762329eabc8786e23e3194cc633858ce741329e99643c3dc8782693f1cc23e3e943c6733d19cf5d643cc3c878c691f13c41c65341c65342c6d3868ce70a329e5bc8780691f15c44c633928c670619cf24329e4a329e8e643cd792f1bc48c65346c6732719cf50329eb1643c5dc9782e25e3798c8ca71f19cf4d643cef92f10c24e31941c6339d8c6722194f27329ea7c978ae26e379968ce776329efbc9784693f17427e379848c673e194f5f329e1bc8780690f15493f14c23e3199f231ef56ebbbc3b1900174e49c82f059e771df038aa67197ed7e0bb18d7abb45a6e68b5d0d0aa18ca2c01fd963bd0af00fccaba657e39f0c8f991b0e237159e256114dbbb8e791250679932ed03cb81c7c53ee9a89ea9585d61d4e9598bee5206637585837adaf61d995f013c2fe8bcb026a0dc0b248c625bea98270175962953acae001e17fb8ea37aa66275a551a7172cba4b198cd5950eea69db77647e25f0bca8f3c29a80722f92308a6db95b9e8a04d459a64cb1ba12785cec3b8eea998ad555469d5eb4e82e6530565739a8a76ddf91f955b01d3cb367b6312b1ee96f2bac0928378584516c2b9cf2549425a0ce32656ac756018f8b76de91eea9766cb551a72916dda50cc6ea6a07f5b4ed3b32bfdae2bb3488578b35f5d0628d85674d8eb5107fd9322f6984cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc0c3a2b1e19ff4e5813506e2a09a3d856bae549bd17343538742a30e693905f033cab1ce8e3a89ea93ee46b8d3a4db5e82e6570ff5aeba09eb67d47e6d7c276c88679752364f63a378c59f14cd379614d40b969248c625be59627d58e4d0b0e9d32b5636b81c7453befa89ea9766c9d51a76916dda50cee5feb1cd4d3b6efc8fc3ad80e9ed933db9815cf749d17d604949b4ec228b6354e79ca53ef374e0f0e9d32b563eb80c7453bef48f7543bb6dea8d3748bee52066375bd837adaf61d995f0fdb211be6d58d90d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a6786ce0b6b02cacd206114db5aa73c9d53cf1d6604874e999e3bac079e75b1f3a49f3b38d03df5dc618351a71916dda50cee5f1b1cd4d3b6efc8fc06d80e4d9d79752364f6b1911b661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e6266880dc53353e7853501e56692308a6d9d5b9ed4770f6606874e99faed6c009ef50ef47154cf54bf9d8d469d665a749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3745e5813506e1609a3d8d6bbe549b563b38243a74cedd846e071d1ce3baa67aa1ddb64d4699645772983b1bac9413d6dfb8ecc6f82ede0993db38d59f1ccd679614d40b9d9248c62dbe09627d58ecd0e0e9d32b5639b80c7453befa89ea9766cb351a7d916dda50cc6ea6607f5b4ed3b32bf19b68367f6cc3666c53347e7853501e5e690308a6da3639e04d459a64cedd866e071d1ce3baa67aa1ddb62d4698e45772983b1bac5413d6dfb8ecc6f019eb93a2fac0928379784516c9b1cf324a0ce32658ad52dc0e362df7154cf54acbe6fd469ae45772983b1fabe837adaf61d997f1f78e6e9bcb026a0dc3c1246b16d76cc93803acb942956df071e17fb8ea37aa66275ab51a77916dda50cc6ea5607f5b4ed3b32bf1578e6ebbcb026a0dc7c1246b1613b36df114fb1c1536cd1e268f956f3bd74be48ff26e0ffbd80d155db32df6094798c71e475ad5989c153626876347dabfa57ea7c1bfd8bdbab121819b657490e346b67f0b433343b9abe9516bd75beadfec5edd51b1819b6573be071d03e57240c1e35653a766f75ac8fa37aa68edddb02bbee781c923278ecdee6a09eb6730999df06dbc1337b661bb3e2e9aff3c29a8072fd4918c586e7fcdbe3e7a948183c6acad48e6d77ac8fa37aa6dab10f02bbeedb41772983b1fa81837a16805f59b7cc7f00db211be6d58d90d9ebdc3066c53340e7853501e50690308a6d1bf0ec889fa72261f0a829533bb6c3b13e8eea996ac7760676dd7780ee5206f7af9d0eea59007e65dd32bf13b64336ccab1b21b3d7b961cc8a67a0ce0b6b02ca0d246114db07c0b32b769ef4982fc8a3a64cedd82ec7fab8a967ba1ddb1dd875df05ba4b19dcbf763ba86701f89575cbfc6ed80e9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99b99915cf209d17d604941b44c228b69dc0f361ec3ce9e70ec8a3a64ccf1d3e74ac8f9b7aa69f3bec09ecba7f08ba4b198cd53d0eea59007e65dd32bf07b68367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b666e66c53358e7853501e50693308a6d37f07c143f4f45c2e05153a6e70e1f39d6c7513d53cf1df60676dd3f02dda50cc6ea5e07f52c00bfb26e99df0bdb61af67f6cc1666c53344e7853501e58690308a6d0ff0ec8b9d27fdfc1479d494a91ddbe7581f37f54cb763fb03bbeefb40772983b1badf413d0bc0afac5be6f7c376c88679752364f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdcef9a3b3e2a9d279614d40b92a1246b1ed059e8f63e7e95c963078d45460cc2721ffb1637ddcd433fddce14060d7fd63d05dcae0fe75c0413d0bc0afac5be60fc07668eaccab1b21b38f8ddc30fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c731433436c289e6a9d17d60494ab266114db7ee0f9247e9e8a84c1a3a602633e09f94f1cebe3a89ea97e3b0703bbee9f80ee5206f7af830eea59007e65dd327f10b68367f6cc3666c53342e7853501e54690308aed00f07cea802761f0a829533bf6a9637d1cd533d58e7d16d875ff1474973218ab9f39a86701f89575cbfc67c03352e7853501e54692308aed20f0b888d502ed0f7964fe5302df6abe46e78bf42f6eaf1a6064d85ec539d0acc4e02931343b9abe55fdc7e97c1bfd8bdb6b1c30326caf921c68d6cee069676876347d2b2dc6eb7c5bfd8bdb6b3c30326caf7639d0ec68b6874773df3e9a71ea353f7a9a171c45cd0b8ea2e6055e732acd1d1c5fcaf1581600034e49c87f063c9fc7cf93bac7f559163c9f03cf0fe3e7e9e4a89e656abd3f02f6b8d6abb4fab1a1d5678656c55006197eec40bf02f02beb9679f1e7993d7314339edb0a6b02ca7d4ac2283669835cb51baaee97ea75c9fa5b84e9e009757e5d3c7bc0fbae2df47a8543fc1542997b4aebca7eaed98ae0ffb2dd547d0e183647ef0377b23d039379f15714e4ee3e68a6fbb2a8858b6737d91ef70f5878be8b8fa70cf773f4b5df51ddb3798eb6dfc21363dd3b453d43dc177fdd53ed4747bd2e59bfda47bf38c1a9e615b8ef49fbd1d1a8732194e9525a57f61b683f6c6d85eb7d53cec9cd7db35950d79e0957a9b69bcf57bed37629f70994c736a797fec5fdb317d4d555bb18758f09db45b3ed76a9bdf98ccff45d0cba7c42aa99ed3905ea5869e1ae24e0c678cce57e26ebb63d23ab347464d30cb7f527161d7b5bb87b137033eed7bd0d1dd9343bd27edddfc2dd9f809b71bfee6fe8c8a6d991f6eb0116ee0104dc8cfbf500434736cd8eb45f0fb4700f24e066dcaf071a3ab26976a4fd7a90857b100137e37e3dc8d0914db323edd7832ddc8309b819f7ebc1868e6c9a1d69bf1e62e11e42c0cdb85f0f090ed5914db323edd75516ee2a026ec6fdbacad0914db323edd7d516ee6a026ec6fdbadad0914db323edd7232cdc2308b819f7eb11868e6c9a1d69bf1e69e11e49c0cdb85fd7b7df3eeb7e5d63e1ae21e066dcaf6b0c1dd9343bd27e3dcec23d8e809b71bf1e67e8c8a6d991f6ebf116eef104dc8cfbf578434736cd6cfbb5a3f7f2cab37d4ff0a0537dd2e3351fcc82e763e07111538ee2a0cc513f9754dfd47d8656070dad701c8cfda09f83be3019dfef177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f11b87f87c45ca7d42c228367c26e5e23ebfaafb657a5db2fe1661ea71529ddffdb1fb2d2f2b30fc258143fc1542996667d795edadd98a82c3b71b8e6b8ddb726fec75486f4b33fe655efc15417df6018f83f7f3533cfb0d9efd162df0bdd3787c970f73a3717999fa3e5eeba06e3bef35ea839a7e14bbff43352d3034fdc8b1ef4470e8f614069c9290471e17cf861dd533d516ec31ea646a5c0c652e807aee7150cf02f02beb96f93dc023133e9377158381c11358f491a919194f3519cf00329ef3c8786e20e339858ca72f19cf23643cddc9785a93f18c26e3b99f8ce776329eb3c978ae26e3c9c53978363c4f93f17422e3399e8c6722194f2119cf08329e03643c03c9787e40c6731319cf25643ca791f1f423e3798c8ca72b19cfa5643c09329eb1643c43c978ee24e32923e3694fc6732d19cf89643c95643c1dc9782691f1b424e31949c6731119cf20329e0bc9786e21e339838ce70a329e27c8782ac878da90f19490f18c23e31946c6731719cfb9643cd793f19c4cc6d3878c6732194f0f329e56643c0f92f10c26e3b98d8ce72c329eabc8782e26e3798a8ca79c8ce738329e09643ccdc9788693f1dc43c6d3818ce77c329e1bc9784e25e34992f13c4ac6d38d8ce758329e31643c43c878ee20e32925e3b9868ce719329e5e643c2790f1d492f1b420e379808ce75e329e0bc8786e26e3399d8ce772329ec7c978ba90f11491f11493f1d490f15491f1f427e339878ce73a329e93c8787a93f13c4cc6d3938ce718329e51643cf791f1dc4ac6732619cf95643c9791f1b425e36947c6f324194f67329e02029e4470f8b79812f0fffd60936f067d0cb66696f5c9735829af8e8bd3db1fbeee6696757f6461409d3e84ba2475beecfb4d299dd05712e6c55f11707c44c2d3998ce749329e76643c6dc9782e23e3b9928ce74c329e5bc978ee23e31945c6730c194f4f329e87c9787a93f19c44c6731d19cf39643cfdc978aac8786ac8788ac9788ac878ba90f13c4ec6733919cfe9643c3793f15c40c6732f19cf03643c2dc8786ac9784e20e3e945c6f30c19cf35643ca5643c7790f10c21e31943c6732c194f37329e47c97892643ca792f1dc48c6733e194f07329e7bc8788693f13427e39940c6731c194f3919cf53643c1793f15c45c6731619cf6d643c83c9781e24e36945c6d3838c6732194f1f329e93c978ae27e339978ce72e329e61643ce3c8784ac878da90f15490f13c41c6730519cf19643cb790f15c48c633888ce722329e91643c2dc9782691f17424e3a924e339918ce75a329ef6643c65643c7792f10c25e3194bc69320e3b9948ca72b19cf63643cfdc8784e23e3b9848ce726329e1f90f10c24e33940c633828ca7908c672219cff1643c9dc8789e26e3d947c6733519cfd9643cb793f1dc4fc6339a8ca735194f77329e47c878fa92f19c42c6730319cf79643c03c878aac9789a91f18c3778f0ffeadd30393f926f0715c2ff07ebcee5257a5d5246de5152f7ba761b3655df5d8eeabb3ba89b9230bf0bea2becbb8167b7239e0f0d1ed37711e42b41b39d864d31ee70c4b8d36094f91dc028faed049e9d8e7876193ca6ef22c8f706cd3e306c8a71bb23c60f0c4699df0e8ca2df07c0f381239e1d068fe9bb08f2fd41b36d864d316e75c4b8cd6094f9adc028fa6d039e6d8e78b61b3ca6ef22c80f00cdde376c8a718b23c6f70d4699df028ca2dffbc0f3be239ead068fe9bb08f20341b3cd864d316e72c4b8d96094f94dc028fa6d069ecd8e78b6183ca6ef22c80f02cd361a36c5b8c111e3468351e63700a3e8b71178363ae2d964f098be8b203f18345b6fd814e33a478ceb0d46995f078ca2df7ae059ef886783c163fa2e82fc10d06cad61538c6b1c31ae3518657e0d308a7e6b8167ad239e75068fe9bb08f255a0d96ac3a6185739625c6d30cafc2a6014fd5603cf6a473c6b0c1ed37711e4ab41b395864d31ae70c4b8d26094f915c028faad049e958e7856193ca6ef22c88f00cd961b36c5b8cc11e3728351e69701a3e8b71c78963be25961f098be8b203f12345b6ad814e312478c4b0d46995f028ca2df52e059ea886799c163fa2e827c0d68b6d8b029c6458e18171b8c32bf081845bfc5c0b3d811cf1283c7f45d04f971a0d97b864d312e74c4f89ec128f30b8151f47b0f78de73c4b3c8e0317d17417e3c68b6c0b029c6771d312e301865fe5d6014fd1600cf02473c0b0d1ed37711e4ef009bf0f604db3b3adf036c6feb7c77b0bda5f3ddc0f6a6ce7705db1b3adf056cafeb7c05d85ed3f9ce607b55e7cbc1f68ace7702dbcb3adf076c2fe97c5fb0cdd7f924d8e6e97c3fb0cdd5f9cbc13647e7af00db6c9dbf126cb374fe2ab0cdd4f9abc13643e7af01db749dbf166cd374fe3ab04dd5f9ebc13645e76f00db8b3a7f23d85ed0f99bc0f6bccedf0cb6e774fe16b03dabf3b782ed219dbf0d6c77ebfced603ba8f37782ed539dbf0b6c9fe9fc3d60fba1cedf0bb6cf75fe3eb0fd48e7ef07db8f757e28d87ea2f3c3c0f6539d1f0eb69fe9fc0360fbb9ce8f02db2f74fe41b0fd52e74783ed573a3f066cbfd6f9b160fb8dce4f00db6f757e22d87ea7f3b560fbbdce4f02db1f74fe61b0fd51e72783ed4f3aff08d8feacf38f82ed2f3aff18d8bed0f9c7c1f6a5ce3f01b6af74fe49b07dadf34f81ed1b9d7f1a6c7fd5f967c0f6379dc7b16effaef3a541bcedecb741dd540abec59f2af30f9d6f699491650ba1cc71ba83a37ac6a1be652aedb0b4cbca26edf03b609376f86db0493bfc16d8a41d7e136cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8923a3f1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493b3c1d6cd20e4f039bb4c353c126edf014b0493bfc22d8a41d7e016cd20e3f0f3669879f039bb4c3cf824ddae187c026edf0dd6093fde55bb049db7c106cd2367f0a36699b3f039bb4cd3f049bb4cd9f834ddae61f814ddae61f834ddae69f804ddae69f824ddae69f814ddae69f834ddae65f804ddae65f826d8cceff0a6cd236ff1a6cd236ff066cd236ff166cd236ff0e6cd236ff1e6cd236ff016cd236ff116cd236ff096cd236ff196cd236ff056cd2367f0136699bbf049bb4cd5f814ddae6afc1266df337607b46e7a5ad6e05367956aca6b2ef39e1383c78ce2f4cc920deb61fa724e49f86bacbd48c8ce725329e6a329e01643ce791f19c42c67337194f6b329e99643caf93f1fc958c673519cf2a329e6d643c5bc978ce26e3d947c6733c194f2119cf3c329e11643cef90f11c20e31948c6f303329e4bc8784e23e33948c67329194f828ce755329ee9643c2bc9785690f1bc4fc6b3858ca78c8ca73d19cf89643c95643c1dc9785a92f1cc21e31949c6f31619cf45643c83c8782e24e339838ca70d194f0919cf54329e71643c2f93f12c27e35946c6b3998c671319cfb9643c7bc8783e24e339998ca71519cf2c329e37c8780693f19c45c6b3808ce762329ee3c8789a93f1cc27e3594ac6b3848ce75d329e8d643c1bc8783a90f19c4fc6b39b8c671719cfa9643cc792f1cc20e3798d8c6708194f29194f2f329e13c8785a90f1cc25e3594cc6b3888ce76d329ef5643cebc878be25e3d949c6b3838ce774329e22329e62329e69643c35643caf90f15491f1f427e339878ce724329ede643cc790f1cc26e3798f8c672119cf9b643c6bc978d690f17c40c6b39d8ce74c329ecbc878da92f1b423e39942c65340c093008e006cf2ffe660fb46e70f804dbed7b30f6c5febfc02b07da5f3cf80ed498bad99854f18be019bbcdbfc14d8e4fee7d760937702be029b9c57897f353fbffde1fccd6019f1d3dcc28ffebeb270491eb7b72c930ce2dddee82b191cfe3da522e0788a84670a194f3b329eb6643c9791f19c49c6b39d8ce703329e35643c6bc978de24e35948c6f31e19cf6c329e63c8787a93f19c44c6730e194f7f329e2a329e57c8786ac878a691f11493f11491f19c4ec6b3838c672719cfb7643cebc878d693f1bc4dc6b3888c673119cf5c329e16643c2790f1f422e32925e31942c6f31a19cf0c329e63c9784e25e3d945c6b39b8ce77c329e0e643c1bc8783692f1bc4bc6b3848c672919cf7c329ee6643cc791f15c4cc6b3808ce72c329ec1643c6f90f1cc22e36945c6733219cf87643c7bc878ce25e3d944c6b3998c671919cf72329e97c978c691f14c25e32921e36943c6730619cf85643c83c8782e22e3798b8c672419cf1c329e96643c1dc9782ac9784e24e3694fc65346c6b3858ce77d329e15643c2bc978a693f1bc4ac69320e3b9948ce72019cf69643c9790f1fc808c672019cf01329e77c8784690f1cc23e32924e3399e8c671f19cfd9643c5bc978b691f1ac22e3594dc6f357329ed7c9786692f1b426e3b99b8ce714329ef3c8780690f15493f1bc44c6d38c8c67bc856781231ee9bb22eb96f9054ddcf72ec3f7ae3cf1bdc3f0bd234f7c6f377c6fcf13df5b0ddf5bf3c4f716c3f7963cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b4ff22d883dfa3701ffc7f1e3f639625c6030cafc3e60141b8effdecb114fd4b57b2f02df4a0be9bb28efd027e0ff95c0e82aa67a198c326f8b291c6fb4d2114fd43d874a02df4a0bf996a37c132b01ffc7f1535cc554a5c128f3b698c2f1bf7a3be289ba57d29bc0b7d242bee528df004ec0ff717c225731d5db6094795b4ce17813fd1df144dde3e94fe05b6921cf62e4997902fe3f00185dc5547f8351e66d31b515780638e289ba373580c0b7d242fa9e499fe504fc7f2030ba8aa90106a3ccdb626a0bf00c74c413754f6d20816fa585bc1b25efb026e0ff8380d1554c0d341865de16539b806790239ea87b8183087c2b2d06ebbc7c232701ff1f0c8cae626a90c128f3b698da003c831df144ddc31c4ce05b693144e7e51b9c09f8ff1060741553830d4699b7c5148ee73bc4114fd4bdd72104be9516553abf56ff26e0ff55c0e82aa686188c326f8b291cafadca114fd43de32a02df4a0be91b237d0613f0ff6a601ce288b1ca6094f921c028b655c053ed8827ea5e7735816fa585f4755fa97f13f0ff11c0e82aa6aa0d4699b7c5d40ae019e18827ea1efd0802df4a8b913a2fdff048c0ff4702a3ab981a6130cabc2da69601cf48473c51cf164612f8565ac8d807f24dbe04fc1fc7cb761553230d4699b7c5d412e0a971c4b3c8e05964d1e268f9565ac8b75f16ebdf04fc7f1c30ba8aa91a8351e66d31b50878c639e2897a96338ec0b7d242fa76bea77f13f0fff1c0e82aa6c6198c326f8b291c7f79bc239ea86750e373e03bea794a2e7c473d1bc885efa8fbdcb9f01d75cf3617bea3ee3fe6c277d4bdb45cf88eba2f940bdf51f73872e13bea7a3d17bea3ae3d73e13bea3a2a17bea3ae0972e13beafc3617bea3ced572e13beabcc3b7e7be3d8fdbf7d13c77c8d7f6fc681e438fe6b1c45f1bf86b835cf9f6c7127f6d902bdff97a6de0dbf3dcb7e772fd5510445f8f2d73e47b89e15be6f139cb1247be1719be651e9f192c72e47ba1e15be6f1fef74247be8b0ddf32bf3007be4b0cdf2539f4ddcef0ddcee2dbc5f64e04875e7f0b034e49c8630cbce780c7513dcbd47a17eb757d17e37a6df76dccfda518ca2c06fd5cb71db2ee4c6d47abf87c9725c0878c19a76cf22cf61db0491bfa36d8e419fb5b609376fe4db0c9f39d37c026cf7f5e07db489d3f0836790e8bfddfe559fa76b055e93cf6bb1ea2f35bc126fd92b0bfaff42ddb0236e91f88fd4ca58fe726b0493f5decdf287dad37804dfacb63bf3a79e7611dd8e4bd15eccfb54fe7d7804dbe5189fd88bed6f95560fb46e75782ed699d5f01b62774fe6eb07da9f3df82ed719d5f08b62f74fe3db03da6f38bc1f6179d7f0d6c7fd6f957c1f6a8cebf02b647741edf0bfb93ce7f08b6c93a8fef23fd51e77781ed619dc7f760fea0f33bc0f67b9d7f196c9374fe25b0d5eafc7cb0fd4ee7e7816da2cecf05db6f757e0ed826e8fc6cb0fd46e76781edd73a3f136c63757e06d87ea5f3d3c13646e7a7816db4ce4f05db2f757e0ad81ed4f9bf82ed173abf086ccd747e09d8647c41ecf321dfcc5c063619371bfbf2c85802e3c1768cce8f035b2b9daf019b7c676d24d864acde11604be87c35d88a74be0a6c72ae33046c32d6ca60b0c979c920b0b5d5f98160937388016093b10ffb834dbee7d91b6c32a67725d8e43bfebdc07692ce2f009b8c6fb60f6cf2cdb50360937184bf069b7c6bf91bb09daef34f834dc67c79026c67eafc97603b4be71f079b7c9ff30bb095eafc63606baff37f01db393aff67b0c9f8608f824dbee9f608d8641cde3f814dbe9d3c196c17e8fc1fc176a1ce3f0c361947e50f6093b1247f0fb60e3a3f096cf20de95ab05daaf3bf039b8c6d31116c97e9fc6fc12663184c005b279dff0dd8ca75fed760ebacf363c156a1f3bf025b179d1f03b6ae3a3f1a6cdd74fe9760ebaef30f82ad87ce4b3ba3f667b59fefd7f3c920def3ec8f8343a74ce7d9c2803c719eb716030ffada1b7bddcb53e7c8d21634d3eb9518da0bbef7c4ee3b7d7efe915e57a15eef1ec377219469ab1b07b59c1cf39bebe5f619cbe13d2159b72c7319d83f34d65da2ebfb91a3faee3198841b759032276826756cdcaef38ede872f57fb80c45a001ae29484bc30b8d1aabc0ccf85ebc3f311f0ec8d9d277dedeb222670df8afbdad7bc276ac65a3194d903fa7de8403fdcd765dd322ffe3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed933f3332b9efd3a8fcf9aa5dc7e1246b1ed051e17f7f9f139acac5f3dd75976769ddfbdb1fb3df4f95e0bbdde32a3ce8550e6eff0cc6995cee3389eb2dda2b6a583e78419b7a5f82b82fae0b3a0fd8e78f61a3c7b2d5a48be3436dfe5c3dc685c5ea6fab2a867ecfb0c5df75b3475b5bfeed5eb2a3034c5fdf56383079f8d1601ef27fa3701ebf904eae0601fcf1817e20ff7a5bd6093fcc7c0e8623be3b144da03791e8ecfa6a5cc3ee3b978fcdbbebccc65bbb11bea940c0e8fef42287310dabecf741efb86ec07dd7e67f9bf4c999e538b7eaace3be3af736afbee00ce24f841df1f006b4cbe0f791fa54027f123f642c8ff16fa734839d143b41676b58f489f4e643797fbd858ae18caecb2d43f19c45bff9d06cf4e83596d931f419cfd0e8effaedaa45d111a5d061a4999bda0d13e473c7b0d1ee1107faa8c6cff96461959b610ca7c096d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f147c068d651c5478f93ea78f7c6cedbb8fa7ffd1bb41771f7fffa3788a102e0088cf597c1fa85ab65107d6c9132ffd3388ebab8c6c06d69ea893a4b99ff05ed50c7d2743e9b73fda375dd1675aebfcb014f2238f4da5b4d998eef788cd9ed80c7513dcb6cc7ae0f8d3a1543990ba09e0ece6332be57bb137cbbd8e6a8859c43ed31b4288432ad4bd3bfd27644e988d7aa1fe5a42ee5d6f3c1324b5da44c49695d5d5a813d4e2697dbed03a8935aef5e4b5da5cc09a575ba9ca4f309d84e78dfe47ccbff65cad41ee0b836dbe2af736afb6e05ce24f841dfef036b4cbe0ff9ae869cef8b1fb11742febcd2bab2524ef410ad855ded23f2ce1fb29bcbed31962b8632db2df54f06f1d67f9bc1b3cd6056dbe4d4d2babcc491cb76737b844665a09194c1fbc7726cc7f7ee6cc7fdbd8eb8a38efb7b81d16c37f1dcc525db3e83cdbc876a3b1f9432784e26653a97a67f553b9bb09435ef0dbbb88f89ef9606508fc0a8ab4c18030eae0d2bf0da49da29f1d311ec7b755e74ee68685708657a97a67f1d9e775bef5d9ad777784d21dce6be85ef7e5c5e5ac7ade25eb6d35efd5b04b64ff56fabc0c9755a85ed9ea170d8ee195e5b5ac78ecb0ad7414b5dcc6be466c1e1f7d4bf33cae27db74ccba12f351d309651fa7e6a61da6bf86905cbc6f6ae46a7b2b228fe03c0f7b1c16cd355f6038cb9bd3a6fee2b786d2c65ee2e4dff4a9b649655dbfe8b13eaf491ed28da617b8231f931302675beecfb4da97dee80517f99177f8a51eef71c009ef8dbaef4fb4ad9dc07de073c2eda76476d74191e635bc5b6de1e55b6e3ffc78656397c5e6b3de69bcfdc5b19f9787c9757dbee3fd9b4d863e171f51c254a8b3d16dff169d17598ad9db36991cbbe0f515a7c68f11da31623f0be67262d765b785cdc8bcaa4c56e8beff8b4e85696e9b9066ab1cbc2e3eade439416e22f5be60f09985b19f9787c5754d9ee93d9b4d869e17175dd1ca5c54e8beff8b4e8d415efd165d262878527fefb7399b5d861f11d9f16dd7be03dbc4c5a7c60e171f54c374a8b0f2cbe638c8be1b67b39362db65b78b6e7588bed16df319e1f76b5dd6bb369b1cdc2e3e0be6b462db6597cc7a8c550bcef9a498bad169ead39d662abc5777c5a5475b1dd13b669f1be85c7d53de1282ddeb7f88e4f8ba1dd95ef2df5d0628b85674b8eb5d862f11de335542a2e36d7438bcd169ecd39d662b3c5777c5a54a7ceb536d5438b4d169e4d39d66293c5777c5a94a58ea91beba1c5460bcfc61c6bb1d1e23bc6b8485d4f6ea887161b2c3c1b72acc5068bef188f23a9b8585f0f2dd65b78d6e7588bf516dff169312275ff695d3db45867e15997632dd6597cc778cf2515176beba1c55a0bcfda1c6bb1d6e23b3e2d3aa78ea96beaa1c51a0bcf9a1c6bb1c6e23b3e2d86a79e89adae8716ab2d3cab73acc56a8bef18cf3b53edc5aa7a68b1cac2b32ac75aacb2f88ef1bc3375ff62653db45869e15999632d565a7cc7d876a6ce3b57d4438b15169e1539d66285c5778ce79d292d96d7438be5169ee539d662b9c5778ce79da9e3c8b27a68b1ccc2e36a3c91282d96597cc71817a9b673693db4586ae1599a632d965a7cc7785f2bd5762ea987164b2c3caec66b88d26289c5778cd723a97b7c8beba1c5620bcfe21c6bb1d8e23bc66745a973f045f5d062918567518eb55804bef7c5ee3bdd9f5b7c485fac4b0d2d0aa14ccbf6e95fe98b15a5a3ac03fb95615dde8bbd2ee97e650b23eaf21ed445ca14415d5a054ec6fba97054d754cc2c803aa9f57e62a9ab9469d7be4e97e3753e01dbe420e8768ee5ff321518f349c88b7eaaceefc45fe754acbe0d9c49f083bedf02d6987c7742df053a891fb11742be7dfbbab2524ef410ad855ded23efea3cb29bcb2d32962b8632ef5aea9f0ce2adff3b06cf3b0673eabd0788338923376d579ae9dd088d2e058da40cf6d9fbc4118fd9875038c49f2a23dbbfa55146962d843217431b85fd4aa59e89e0f07e938edab24ec82eeb9679f1570cb67dc068d651c5c741e8fb296345c83812ca26e3427486f574336caaaedd1dd5557cc9ba65be3b30ca3815dd72cf585e5fc6ae06a3e2e9e940331c7b43a64cc78b9ec0d3c3018fa37aa68e43bd8c3a7537ea540c65f0ddc65e0eea59007e65dd32df0b7cbbd8e6a8851c932f32b4288432d71ae78f513aca3a54fc76b3d4a58fe3bac8baa55dea9303df9586ef2e86ef4470e8760e82ccfb572530f776c0acd6db37fef596e1799bc494f8e90275ea071ac455275c979ce7f533b42d84fc7d709e27e5a4ac1cbf845dc5b26c4b643797eb692c570c65fa58ea9f0ce2ad7f5f83a7afc1acb6c9ed706ee7607f48c5401f8343e6bb80767d23b4eb03da49193cfe7573a45d6f83a7b7e15bf1c8394e2fb0c9b982f027e0ff9d73c06db67bbd2cdc62c371e26ce73a5de367cc78aed31518c5d61b782a1d69666eeb8b0c7df0b8dcd22823cb16429909706c4c58caaafdee8282ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6383bab11a27d6d64c18fac0f0db87a71f3d0a5aa18189bf05966a34031be69b5b6c4170e8909485609321295b80ad99210b0e8529e565483b1772a11eb2ee4283b315b0c4e91b87f3942953e81c033c2e4259858e0ce9a943e7ee09a36a87637cb430381b123bea7fcd33948b5a97abed60ee1349983763b0d091ffe650df24cc8b3fb56d8a757edcd0610ff59bf0c0a431c3c7d64e44a1cc1d1bf305c1a11bc0fc8d12dcd54e87018015c6c6a185512f6c30e47fb2618e8d9fb302c7cc35b509c09f4cc7826ead1de8a6d62f63df0e1b3a7af4ad93aa468f1a76f5a4b1c36a47d58cc5add9ca502e6a4bcbff5b82cdd6c463593561b385cb1e63b1d9261c65b815d8e4c8d51a6cc2732cd89a435eca9b5bc649b89e07eb975d4afd4f89d34257fc98a02e04e470acda55b5ffaacfc7aad32035d4b11ada586d4e3574b1ba63a88626565fb153430faba186d5d0c2a705e9a183d550c16706e9a180d5d72e4a83f4d0bee7047543f7aae920709e1fa487e655b7692e0cd2a75d6a68dd0e417ae85c75eb52bdbaae3ef3a6dead57a7efeab6803ae5559778ea72449d82aa534f75fb42ddca52a774ea74599d0aaad3377539d2576bdd2f4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e30dd19a48777be2b480fbfae867fbe27480f0d7d6f901e36fabe203da4f4fd417ab8e9a1417a28ea61417a98eae1417a08eb0782f4f0d6a382f4d0b90f05e9a176c704e9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f263417a18663564f393617a2a480fe9fc4c989e0dd373617a3e4c2f84e9c5203d3cb81a367c5a901e665c0d3f3e33480f573e3b480f6fae863d57c3a1ab61d2d5f0e96a587535ccbb1afe5d0d0bff7a98de08d39b41fa91847a14a31e51a8dbffea3198ba45fd5e90be75be38483fe2568ffc551708d5254475915919a4bb50a92e65aa8b9dea72a8ba60aa2ea9aa8baeeab2acba70ab2eedaa8bbf7ae541bd02a25e8951af08a957a6d42b64ea953af58aa17a4d54bd76a95e2356af55ef0dd2b7c5f707e947a5ea76b87a34a0e251ddbeff2c4c3f0cd3e761fa51987e1ca69f84e9a761fa59987e1ea4873056c31dabe192d5d0ca6ac865353cb31aca590d05ad8688fe63901e7a5a0d5dfd97203dfcf59761fa2a480fc1fd4d901e7efd6f61fa364c7f0fd33fc2f4cf30fd2ba81b4a1b1b8bd3740ba3af5282a1b5b5c3c78cab2dadad291d336974eda871a31f2d9d3caa766469cdc3c3278c185d331917fe5c2f2ce380f79b3061e8a3a5a3c6560f7fa4b466526d69cd88d2aa9a4963ab0f3950ff532f74c6e11e875657473bfbf7ef43fa7f1ae8b4b56efb6484f5eb32d7ada879030439ae210b756ddeb00a3da68f5272397b47fa5cb774e2e89adad2b2d2b1e1dff0e05a33797875c752fcdfc450e489b5a5136b874ea82d1d31a1664c69a78eb8de29c736a01205093730ed4e6b983825fa5b4a0d0ab1bd673740812fce6e18e97ffb3ea4ffa3814e5b9536a0866d1ab2507969c3082b4b23659938a9aa76c2d061b5d10bf7fb3e0b5fd3906aded5c06ab668df006789862c7451fb86115ed31067e3b37016fc7f2c09ce921c4f0600", "isInternal": false }, { "selector": { "value": 2603445359 }, - "bytecode": "0x1f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433828b4506139833254ab272204882222d92a04828599625599273ced9723acb39e7b32eda77e73bdff91ce49ca3e474ffdcf3bdbbf7fcae7bb6cbf8d09c5963a129b0065bf35e717b0abd53bffea6ba67b67b7699098adb1f8c655cb9dad845c1b91bfdbdcfbde69fdad69ae0b1f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82915bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413ac6a8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d9a7b5de65e97bbd715ee95deb3cabdae766dac71fb2dc6d6583663addedf0ac6da8cb51bebf0fed669accb58b7b11ef7b766f7b75e636b8dad33b6ded806631b9d0e9b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1cb8c1d3076b9b12b8c5d69ece9c6ae3276b5b16b8c5debb15c67ec7a633718bbd1d84dc66e3676d058bfb143c60e1b3b626cc0d85163b7183b66ecb8b16718bbd5d80963278d9d323668ecb4b1db8c9d3176d6d890b1db8ddd61ec4e637719bbdbd3ec99c6ee31f62c63f77a9ccf36769fb1fb8d3d60ec39c61e34f690b1878d3dd7d8f38c3ddfd80b8cbdd0d88b8cbdd8d84b8cbdd4d8cb8cbddcd82b8cbdd2d8ab8cbddad86b8cbdd6d8eb8cbdded81b8cbdd1d89b8cbdd9d85b1c0b7584b71a7b9bb1478cbdddd83b8cbdd3d8bb8cbddbd85f197b8fb1478dbdd7d8fb8cbddfd8078c7dd0d8878c7dd8d8478c7dd4d8c78c7ddcd8278c7dd2d8a78c7ddad8678c7dd6d8e78c7dded85f1bfb82b1c78cfd8db1bf35f677c6feded83f18fb47635f34f62563ff64ec9f8dfd8bb12f1bfb5763ff66ec2b9ee6ff6eec3f8c7dd5d87f3adfd7dcebd75d5d9a17fb86b16fbaf2e3eef55beef5dbeef53bde7bbe6bec7b9eeffbc67ee0f97e68ec47aefc63f7fa13f7fa53f7fa33f7fa73f7fa0bf7fa4bf7fa2bf7fa6bf7fa847b7dd2bdfec6bdfed6bdfecebdfedebdda35d5cb9a8ae5c9c1f0d617243446b51fcddb3515127f693072b35a54bbbfd16bb3f3d7b87d7a25ed6add7eade7af73fb75de7126bbfdc99ebfd1ed377afe996e7fa6e76f72fb4d9e7f8edb9fe3f92f76fb17833f1bc09cabf35b5fb57365c047f95a05be5ae7ab065f1d1d0e7c939caf167c747eebc037c5f926816faaf34d065fd6f9a69096c6ea9daf2f482a57f2fdf6b8b9a48febd6a1a625cf7bd81eb78189777af2bc03f6b88d0cbc363f66b8634d87bc99e97c8de09be57c33c0e786a03ff739eb9bed7cb3c037c7f99ac037d7f966836f9ef3cd01df7ce79b0bbe05ce370f7c0b9d6f3ef81639df02f02d76be85e05be27c8bc0d7ec7c8bc17781f32d01df85ced70c3e7ac6e502f05dec7c1782ef12e7bb087c34d65e0c3eba37bcc4f9ec38313903ef717e1aa3c2f7d0f80cbe653436836f398dcbe05b416332f856426cf2ad8271857cab9d8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282cf06b562ec8c338a43fe1a28ef82ba548ff4a0eb0cb1dbebc93a57de58e27dbddefb7250675d44fbfb8264dbbfdee359ef31d742fb7972b6ada0393beaadec9cbd1aeafab947f73c133167f7020743ce766ace8e7a2b3b6707a0ae9f7b74df3b1173f63ae060c8d97e9e9c2de435678b736441109d7bf4d96722e6ec31e0483e673b346747bf959db30f405d3ff7e8f3ef44ccd93b8023f99cedead77b83516f65e7eccba0ae9f7b3417331173f621e060c8d9011d6747bd959db36f81ba7eeed1bce044ccd9570247f239dbc394b36d9ab34171bd3308a2738fe6a82762ce3e021cc9e7ec619d9f1dfd5676ce7e16eafab947eb251331673fe4ca769de16b6e9d6121f8beee7c8b8037f9dc3ed2ce94db05cdede2732041109da3b476371173fb3157b679fc383c7b40be6f39df05e0fbb6f35d08beef38df45d02e863ed0af7d60d45bd97de07b50d7cf655a479e887de0abc0c190b387356747bd959db34f405d3ff7e899868998b33f040e869c1dd09c1df55676cefe11eafab9b7cc952762ced273a5f67ee1c7ee7e6105f87ee27c2bc1f753e75b05be9f39df6af0fddcf95ac0f70be75b03be5f3a5f1e7cbf72be56f0fddaf90ae07bc2f9dac0f7a4f3b583ef37ced701bedf3a5f27f87ee77c5de0fbbdf37583ef0fced7e37c76bd8b9ebdfab2f3d9734b1af505c99e5b7ac6928e4dfbabc621768317bb611c63377ab11b2362af66889d8518b465bcfd3e28afe6e5c9e78291dfffa0586b928fd566dbde128cbeed6b8027cfd0f62cc4180d4f1e785a93e7099ff52d247fdcf01cb7789a6621560bb4ab8da15d198845c7a67d8a97031f8edf6d118cedc9331632108b8e4dfbedc0483ebc9ed0759dfa8fbd1e2ecd0cf332f4a5f09e88e2d16f7f11c71af0539ddfcf1a665be1d8eae1ef786d6df57c4c7919e605c5a263d33ec5ab87f6b48e3f6361b48c798f916b8cc8402c3ab61f1bfbfbeaf1d76c54e73507bef3302615c63a26d503db78dca7c49d6b29b139ae57198841631b695e003fd599edbe9060c7b61d30ee32f4bf42b9f76f381e249fc7853cf6ebd1f0b4010f47df67eaaf79bceeff294836d73a3cad5a3dad7250a71df4eb60d0afd47d08c55366655666655666655666655666655666655666655666655666655666655666f9ccf8fc05ae6f52bd554218c957001e8e79fef0f7a3dcb1e8f8765de7dbb0ae93fcba45218f6b96f48ce172afcd3550e7c9cc70ddefc37ababf36886b9aab78b51bd57316f5c1b96bb19c6b8871ebc051eb97cd89c52e1ce65a6fb3bfa1627f87acc5d3755584a60ccfa98cd034e3698acf29aef4786c9eceab1e66e358fb2b772d12b5a272926b7bf88c01ef79298e1f940b55c1c8f103af339d89c71eb98649ebe59d5eec1aa8f33f99e17343cfa2d2ff73e83ff364eb7479c7a6f72c077f9777ec06f75ee2a8f58edf02efa53aff0763ea5bab823f6bc6f1fc078ecb01b415b73e28e3ba79f2d7e1e23a7e5b193c1dc0c331ce30dd6fe4b10f24bd8edfe56915751f43753a41bf2e06fda2ee45699fe229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c66fcae28b166a15e4108e3383dfb10ae67d0efbfd0f1edbace8bab86e372afc3d19ad30aafcd3550e72b55c3755feecaf5c1b9cf3bc49d4b86f5bc92e792e2d5437b702d88ebfbdced1e4f7b8416546e4e2c76711d3f798d87d7f1db3c5d0b119a72f5575c63454db1bfb67a3cb8365a1f9cfb6c49168e331ecf0ec5e505c5c3bed40e3e2ae3f7a339ce335e4bfce77a281eae5f3feab46d08b8ce7d21cf396e74439bfa8273f3bb06ea7c10c6be0fbb323ec381cf8e3c16f177da4aad53937e2cbf65972faefbae05ce3e8883b1d7016b42b15b3176c619c5217f0d94bf50355c97ea911ea435b1db3e42bf0986ecfefb5abdf7e5a04e4f44fbfb8264dbdfebf1f47accf69c7c0cf2ec31b8fe738d493d311a2d078da80ede07713d93e78f91fef38df8dc5e9d5707ef59a8ce97608c8a7b7e34ea9943aeeb58dc338751f7c61dc0e8b7d17fceb3d29fd37a1cc68ba49fd37a1c72089fd30abce3af80e313575d107f6da13adff58eefdf93d37bf03930aaf303182f1adc338bf5c1b9f7dff8ccd4787cbe8a7b4e9ae2e17d0df6edbfd476cbdc0df5fb1264c69c4016bc4fa03abff2ce59570cf79a88f73e19f35ed26ab52be3e7175f3fab430fbca72f111d8a7dbed76b0be5750fb485eafc97770f98fc7d4bf11e30f9b68ebc27a171a03da2ad54e7bfa1affd11eef1e83ce1e78ebaea73ff4e5ba97b40d2cfb679bc7f1f18634bf87de0daeae1bafeeffc92d6e5fe3e70a7f73e89bf0ffcbf906775f01c3ad758bd2e46a315a011d5c1ef06d175047fcb37ea1ac3f56c7fdc3526ea3728717c6ea81e7f367f5e2dea1e81ead07bf11e6196636e703afb75fdf942ba5e26f9dc307e57a205e2e277255a98f4cc836e7db08ff705e733769e2976dc6f4ee7c72176dc6f4e8f47ec462f76e338c656cd5573499a33fc2672f8fd33fccd52bb95ba2f25861cbcaf2a058cd52960ac4901636d0a18eb52c03829058c9353c03825058c5353c09805c6f3796d67d0a730567db8ce57a97b0d8cbd9a498b72feff0ee6ff4ba5e4bd0fc666f84c176ab13a18bd16f8398fe3b71fcafdbf5e8801ffef821929609c9902c65929606c4a01e3ec1430ce4901e3dc1430ce4b01e3fc14302e4801e3c214302e4a01e3e214302e490163730a182f4801e3852960bc28058c17a780f19214302e55c6441857f23216c6ca687938fecfbfa7f27f8e31f0e4a39e3965faee49d9ffdf1af3ef93b68ef577e3f0d912deff13eea9fdb61dc7b323e5feb65da9ff6f9589b1305646aee7d8f17b3ca3e1c1ef45467db78681b1305646aeefbfe077f446c3d3099a754468c6c058182b23d7b372e53ecb89cff4774668c6c058182b233e579d204fa85957193cdda0595784660c8c85b132723d979c8518a3e1e901cdba233463602c8c9591e9bb6da1663d65f0e077c07a223463602c8c95d1f2ac65d2acb70c9eb5a0596f846692189127e9dfc9ee8d88c5f19dc172db4e0cc83825058c5353c088cf49708c5fa59e93e8e5d5a730567db8ce57a9e7243036c3f763422df0fb107f498bf5bc3c259f93c0d81b98b4c0efabfc252d36000fc7f767b21063343cc49083f7cd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1b32ac3bd62c9cf2f1b2678ecb8cf2a133d76dce792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d73fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e233886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430edeb736058c1b53c0a83aaa8ed6ec967f6a9bea2888310d3a2aa3322aa3329e0fc6348ce1ca988a7c2c8c95d1f26c4b9e27d46c6b193cdb40337a5f2b2f6361ac8c96677bf23ca166dbcae0d90e9a6d8bd08c81b1305646cbb323799e50b3ed65f0ec00cdb64768c6c058182ba3e5d9993c4fa8d98e32787682663b223463602c8c95d1f2ec4a9e27d46c67193cbb40b39d119a313016c6ca68797627cf136ab6ab0c9edda0d9ae08cd18180b6365b43c7b92e70935db5d06cf1ed06c7784660c8c85b1325a9ebdc9f3849aed2983672f68b627423306c6c258192dcfbee47942cdf696c1b30f34db1ba19954c6b52960dc980246661d0b6365b43cfb9978f695c1b31f782e65e2d95f06cfa5c07359f23c614e5d5a060f31e4e07d6b53c0b831058caaa3ea28895175ac1c1d95511995b13cc6be1430eab95646a98c0c9faf4a7e87e6d2091ebbc18bdd5021b1e3be4333d1636b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae792621f483e76a1dcdf9839003c1cbf79c3d4cebc3deee5ee587f4a503fabd5159e56977a5ae5a0cee5a0df150cfa65202e1d9bf6295eb9cc4f13c0cc14bb30cd1c630ab49f626cf4f4b0f1af646a7bdc587fe5048f1d37d64ff4d87163fd448fad79ae795e09b135cf35cf2b21b6e6b9e6b994d858ae0d86efdbe9f74fed319eeeca356e1f59c94f752e9b547c6d08b40f71c4d63ea4d78a4a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9ecbcb73cc87aa71e0093c9ea004cf62613c7385f1cc10c6334518cf72613cd5c2783608e3198fe7f9cae1d92d8c6787309e6e613c4b84f1ac10c6334f184f4118cf4c613c1dc278a60ae3d92a8ca74618cf26613c79613c7b85f12c15c6335f18cf2c613c2b85f16485f1d40ae3d92c8c678d309e65c278f609e3d9238ca75718cf4e613c3dc2783a85f12c10c6d3268ca749184f8b309e7a613c39613cdb84f1d409e3592d8c67bf309e75c278160ae3992d8c679a309e06613c9384f1ac17c6b34b18cf76613c5dc2781609e36917c6334718cf2a613cd385f1340ae3d9228c67b2309e8c009e6c70ee6f9265e1ef07c057e5bdd7de0fb4360dfffd2ae7af82f75cedcad511c7be0a7cf4ddf0ab23de8b3a5d056de973e5fc53db429d30561fec53bc7ae0b85a08cf64613c5b84f1340ae3992e8c6795309e39c278da85f12c12c6d3258c67bb309e5dc278d60be399248ca74118cf34613cb385f12c14c6b34e18cf7e613cab85f1d409e3d9268c27278ca75e184f8b309e26613c6dc2781608e3e914c6d3238c67a7309e5e613c7b84f1ec13c6b34c18cf1a613c9b85f1d40ae3c90ae359298c6796309ef9c278960ae3d92b8c272f8c6793309e1a613c5b85f14c15c6d3218c67a6309e82309e79c2785608e359228ca75b18cf0e613cbb85f11c10c6b341184fb5309ee5c278a608e399218c67ae309ec5c278aa227818feffcb90879e5fa363d3fe0121b119ce43f8ff7e5ec3d4a66bddb16add71899fe2d5409debdc4061d7eff1bdc4e53f6f88d7a66b41a36b99da42e723e39d1fe6d8057cae320086c0d32788e0e1781e95a99d23f230c1ff7f366fb5baced3ca3f7739a8730de8771d837e51b9fde73ee05ed3c86c79e8de8c58b3506f831046f25dc9cb13f6db0dc1c8ad54bfbd0e7838c630a67686fdeb7aaf4d1b2274a73a98abd733b433aaefd0fef5701ed2c66c7936b932b166a1de26218ce4bb969727ec5f9b82915ba9fe753df0708c3f4ced0cfbd70d5e9b3645e84e7530576f60686754dfa1fd1be03ca48dd9f26c766562cd42bdcd4218c9771d2f4f7b16da4c5ba9fe7503f0708c3f4ced0cfbd78d5e9b3647e84e7530576f64686754dfa1fd1be13c28b33247315b1efa0e17b166a1de16218ce4bb9e95a73d9f8536d3566a1cbb117838c67926ddc371ec26af4d5b2274a73a98ab3731b433aaefd0fe4d11b19b8364b5b879145adc1cc173f3386b41f1ca65be2685ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce76539d5567d559754e825975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5982ce96877e338b58b3506fab1046f2ddc0cb137e2f686b3072cb78fb7d50be19786e64d087a99de133e407bd366d8dd09dea60ff3ac8d0cea8be43fb07e13c1c2c83f9a61432abce6363b63cf4dbf4c49a857adb843092ef465e9e701cdb168cdc4a8d63078187639c676a67388ef57b6dda16a13bd5c1fed5cfd0cea8be43fb144f9995398ed9f2d0ff1145ac59a8b75d0823f96e66e52984df6fdc1e8cdc4a8d63fdc07330719ee238c6a07b388e1df2dab43d4277aa83b97a88a19d517d87f60fc1792887f9a61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efabf8288350bf576086124df41569eb670dd61473072cb78fb7d503e043cfd89f314d71d18740fd71d0e7b6dda11a13bd5c1fe7598a19d517d87f60fc37998e8cc37a5905973637c98353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e486e5d9e9cac49a857a3b853092af9f9727fcdd839dc1c8add4733b8781e710833e4ced0c9fdb39e2b5696784ee5407fbd711867646f51dda3f02e7419995398ad9f2ec726562cd42bd5d4218c9778897271cc7760523b752e3d811e0e118e799da198e63035e9b7645e84e7530570718da19d577687f00ce83322b7314b3e5d9edcac49a857abb853092ef302f4f388eed0e466ea5c6b101e0e118e799da198e6347bd36ed8ed09dea60ae1e65686754dfa1fda3701e945999a3982dcf1e5726d62cd4db2384917c4778790a5968336da5c6b1a3c0c331ce33b5331cc76ef1dab4274277aa83b97a0b433ba3fa0eeddf02e7216dcc9667af2b136b16eaed15c248be015e9eb07fed0d466ea5fad72dc0c331fe30b533ec5fc7bc36ed8dd09dea60ae1e63686754dfa1fd63701ed2c66c79f6b932b166a1de3e218ce43bcacb13f6af7dc1c8ad54ff3a063c1ce30f533bc3fe75dc6bd3be08dda90ee6ea71867646f51dda3f0ee7216dcc9667bf2b136b16eaed17c2483ebc5eec67e2c9793cb9082d2662ec062f764385c46ef4623756486ccd73cdf34a88ad79ae795e09b135cf35cf2b2176a5e69a6a5e999a67cea3e699f3a879463517a9f99f928bdd81e34a15c43ac6d44edcfaa08cf373b42d16c6335718cf0c613c5384f12c17c6532d8ca75b18cf12613c2b84f1cc13c65310c63353184f87309ea9c2786a84f1e485f12c15c6335f18cf2c613c2b85f16485f1d40ae359238c6799309e5e613c3dc2783a85f12c10c6d3268ca749184f8b309e7a613c39613c75c278560be359278c67a1309ed9c278a609e36910c6734018cf24613ceb85f17409e359248ca75d18cf1c613cab84f14c17c6d3288c67b2309e8c009e6c70eef751f0fb04d5e0a3e7fbf783ef19ae7c007c551131e838c7c147f3b9740c7bbd5ad7742e4315bce7d608ae6744c4a338b746bc773c74c7587db04ff1ea81e356213c9385f1340ae3992e8c6795309e39c278da85f12c12c6d3258c67bd309e49c2780e08e36910c6334d18cf6c613c0b85f1ac13c6b35a184f9d309e9c309e7a613c2dc2789a84f1b409e359208ca753184f8f309e5e613ccb84f1ac11c6532b8c272b8c67a5309e59c278e60be3592a8c272f8ca74618cf54613c1dc278660ae32908e399278c6785309e25c278ba85f1540be3592e8c678a309e19c278e60ae3592c8ca72a82e700134fdcef291c1010dbeee74117bb65e1efe3f13da5031e23ed1f0346e4259e3c134fdc6f50e405c4b6eda7cfeab4669185bfe3f74cb8722aef31d27e544ee173966b9878e27eb7638d80d8560b5a1ba06700b2f0777cae9a2ba7d6788cb41f95538dbc3ce1ff2db13a18b9957ad608fb1cc739646a671efb5f82bfa111f95bd4ab3dadf03754c7e3b9e2b8f180e229b332c7315b1e5afb2256bc9e8dc7f79646c318757d65e009c7c79660e4566a7c3c063c1cd70fa67686e3d809af4d2d11ba531dccd5130ced8cea3bb47f2222767390ac162747a1c5c9089e93e3ac05c52b97f9400a9925e86c7956b932b166a1de2a218ce4cbf3f284e3e3aa60e4566a7c3c093c1cd70fa6768663c229af4dab2274a73ad8bf4e31b433aaefd0fe29380fe5309f4821b3ea3c3666cb436b34c49a857a05218ce43bc6ca53c867a1cdb4951ac74e010fc738cfa47b388e0d7a6d2a44e84e75b07f0d32b433aaefd0fe209c076556666556666556666556666556666556666556666556666556666556666596cd6c79e8bbc3c49a857a6d4218c9779295a7b8eed0168cdc4aad3b0c020fc7ba0c93eee1bac369af4d6d11ba531dccd5d30ced8cea3bb47f1ace83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b63cf41bf2c49a857aed4218c9778a9727fcde567b30722bb5ee701a7838d66598da19ae3bdce6b5a93d4277aa83b97a1b433ba3fa0eeddf06e7419995398ad9f2d06f0f126b16ea75086124df202b4f71fdb42318b9951ac76e031e8e719e49f7701c3be3b5a9234277aa83b97a86a19d517d87f6cfc0792887f9440a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d2d0ffd9f86c49a857a9d4218c9779a95a72d5c77e80c466ea5d61dce000fc7ba0c93eee1bac359af4d9d11ba531dec5f6719da19d57768ff2c9c8789ce7c2285cc9a1be3c3acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc72c21372c4f972b136b16ea75096124df6dbc3ce1ef1e740523b752cfed9c059e330cfa30b5337c6e67c86b535784ee5407fbd710433ba3fa0eed0fc1795066658e62b63cddae4cac59a8d72d84917c6778790a5968336da5c6b121e0e118e799da198e63b77b6dea8ed09dea60aedeced0cea8be43fbb7c379481bb3e5e9716562cd42bd1e218ce4c3eb720f134fcee3c9456871be62dbfd5e57ae77af59f87b2f30728d873d1e23ed638e232ff1f432f134783c0d115a9cafd8b6fdeb5c799a7bcdc2dfd70123574ef57a8cb41f95530dc0b38e89a7d1e3698cd0e27cc5b65aac77e5e9ee350b7f5f0f8c5c39b5ce63a4fda89c6a049ef54c3c7163d2fa71881dd7bfc623765cae8c476cd55c3557cd55734ecd33e751f3cc79d43ca39a8bd29ce13e2a9cefa5180130e0d60765fcacc071efc9d4ce7cd4e7b1f55e9bf0f318ce399cafcf1bcaaccc71cc4cf316ed592f36e913783cb40d316b319ef3a6bd5e9bd2306f5a8af9440a9955e7b131dbd877241fbb3debc5267d028f87b63b98b5606a67381edc19446b4cf1725007f3f44e867666202e1d9bf6ef84f3500ef3891432abce6363b6b1ef4a3c76f1f7e43136e913783cb4ddc5ac054f3b8be3c1dd41b4c6142f0775304fef66686706e2d2b169ff6e380fcaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccca2c9bd9c67e66e2b18bf3f7189bf4093c1eda9ec9ac054f3b8bf3f7f704d11a53bc1cd4c1737e0f433b3310978e4dfbf7c0795066655666655666655666655666655666655666655666655666655666655666d9cc36f6b3928f1d7e1f0763933e81c743dbb398b5606a67387f7f6f10ad31c5cb411d3ce7f732b4330371e9d8b47f2f9c076556e628661bfbd989c72eaee7616cd227f078687b36b3163ced2c8e07f705d11a53bc1cd4c1737e1f433b3310978e4dfbf7c1792887f9440a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d6decfb138fdd16cedf636cd227f07868bb9f590b9e7616e7ef1f08a235a67839a88379fa00433b3310978e4dfb14af12984fa4905973637c98353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e4868dfd9ce46387df67c7d8a44fe0f1d0f61c662d98da193efff26010ad31c5cb411dccd30719da9981b8746cda7f10ce83322b7314b38dfd50f2b10b592f36e913783cb43dc4ac05533bc3f1e0e1205a638a97833a78ce1f66686706e2d2b169ff61380f6963c6f33739b9d8e1739b14a3cabd5adf735db91a7ccf73e51af03ddf956bc1f70257ae03df0b5d7912f85e04ed21df8b5d7925f85ee2caebc1f752575e07be97b9722ff85eeeca3de07b852b0f81ef95ae7c3bf85ee5ca7780efd5ae7c27f85ee3ca7781efb5ae7c37f85ee7cacf04dfeb5df91ef0bdc1959f05be37baf2bde07b932b3f1b7c6f76e5fbc0f71657be1f7c6f75e507c0f736575e0abe47227c6f77e5e780ef1daefc20f8dee9ca07c0f72e579e02be77bbf254f0fd1594e9f53dae5c0fbe475d3907bef7baf234f0bdcf951bc0f77e579e0ebe0fb87223f83ee8ca33c0f721579e09be0fbbf22cf07dc4959bc0f751579e0dbe8fb9f21cf07ddc95e782ef13ae3c0f7c9f74e5f9e0fb942b2f00dfa75d7921f83ee3ca8bc0f759575e0cbecfb9f212f07dde95f1fcfeb52b3f043e1a571e061f8d2bcf051f8d2bcf031f8d2bcf071f8d2b2f001f8d2b2f041f8d2b2f021fe5dd8bc14779f712f051debd147c94772f031fe5ddcbc14779f70af051debd127c9477af021fe5ddabc14779f71af051debd167c9477af031fe5ddebc14779f706f051debd117c94776f021fe5dd9bc14779f716f051debd157c94776f031fe5dd23e0a3bc7b3bf828efde01be66577e27f82e70e57781ef42577e37f82e72651c672e76e5f780ef12577e147c3416be177c4f73e5f7816f992bbf1f7ccb5df903e05be1ca1f04df4a57fe10f856b9f287c1b7da953f02be1657fe28f8d6b8f2c7c09777e58f83afd5953f01be822b7f127c6daefc29f0b5bbf2a7c1d7e1ca9f015fa72b7f167c5daefc39f075bbf2e7c147d7711a676c7fb6fd9274208dac8fdadc12d116f24d86b6f405c9ded3512c3a36edb701239d83c2f8331646cbd8ea315a9e0e06cd30af682bf599a90378da197898da197e66eaf4dad4e6b52907759e06edec64686706e2d2b169bf1362739c73d4a2d61d7799a7450dd67117347b3d2da5231dc3e66f21a22d3dcc6da163d3b8d4330eb1bbbcd8792f368ec7b495ea5f5dc0dccdc06c8fdb9bfc71c3feb5d61d8b728ae2e4a14deb4083a4da84b133ce280ef96ba03cbf69b82ed5233de8fa45ec3697e95c22bbffbe0eef7d39a8d313d1febe20d9f6f77a3cbd1eb33d270d4dc31c0cfd21cc811e8f83f6f3a05d6f8c763da01dd5c1eb5f8149bb6e8fa7db8b6d79e81ea7137c74af40fc789fd5320edcfeb8d719c14dbe2e608cbad7694d9eb1e4bd4e2b3092af1b78ba9834f3cff5324f1fbc2ed77975e8bd3550670d5c1bb311756dbf5b9a196e177d06ff5390ec985ec7a017ce0f04a04fe06918805ed4ce5a069ea9c1f01cc1d9a1c133fdb70c5c3ed07f240368351e26be66229a51053e2c5747f88260e454084ec9d254084ec95679b2e0140cd5b71fa56cb368ba61e0e4f1a1a79f1a3875f8ccdda787068eec1dbc05a96b3d7a248d6b0192a28fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b432b533bce84df1da54e7b52907756ae16f5318da9981b8746cda9f12113bc18128d462ea28b4981ac133759cb5c0896ff2614fa5bfe3e24995d716ecd1d8263fcf136d10055c0ac7cf3838fb37dbd96b5d632605c3279b464f7b476b4f829d31b5572d3b236a6740ed10646738ed8ca6bda8d9194b3b43696724ed0ca49d71b4338c7646d1ce20da19433b43d81c146700ed8c9f9de1b3337a9700db9781d77eaab657483b236767e0ec8c9bbdb3b29fd8ecdd88bdfbb6778af6eec0de15d84f967696c15e6ded9d8cbd4adb2babbd53b47788f68ededee1da55aa0dc6363aad3719db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec52639705c5d9f5cb8d5d61ec4a634f377695b1ab8d5d63ec5a63d719bbded80dc66e347693b19b8d1d34d66fec90b1c3c68e181b3076d4d82dc68e193b6eec19c66e0d8a4fe89c3476cad8a0b1d3c66e3376c6d8d9a0b8626657c8ec8a985d01b32b5e7685cbae68d9152cbb626557a8ec8a945d81ba3f28ae30d99522bb32645705ec2a809df5b7b3fccf0f8ab3f876d6fe45417156decec2db59773bcb6e67d5ed2cba9d35b7b3e47656dcce82db596f3bcb6d67b5ed2cb69db5b6b3d47656dace42db59673bcbfc48509c45b6b3c67696d8ce0adb59603beb6b67791f0d8ab3b876d6d6ced2da59593b0b6b675ded2cab9d55b5b3a876d6d4ce92da59513b0b6a673ded2ca79dd5b4b39876d6d2ce52da59c92f187bccd8df18fb5b637f67ecef8dfd83b17f34f645635f32f64fc6fed9d8bf04c5bcfc5763ff66ec2bc6feddd87f18fbaab1ff34f635635f37f60d63df34f6b8b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b11f19fbb1b19f18fba9b19f19fbb9b15f18fba5b15f19fbb5b1278c3d69ec37c67e6bec77c67e6fec0fc1f0ea060e227f743b34d3de3f343470f2f450f3d060f3c9db4f0c1d3f7de2eee63b8f0f1d6b1ebc63e0ccd1138377e29bdfe3862d5a46d874e64cffddcdc74f1d19b8ab79f0f6a1e6c1a3cd87066f3f75e42cbee98bee4d0bcf8dd87fe4487cb06f563d05d2ef8c31e82fddfb68816657e9b63d311641fe309637cdac1e5b832e75571dfaf47e45f16eb7f9ec89c1a1e67cf329f36fff09f39e81232dcdf8b7b346e4b343cd6787facf0c351f3d3378b2b9b5058f7bed943134a2a6690c6f6a691a7dcb83ff0711681f3f2d0a0400", + "bytecode": "0x1f8b08000000000000ffed9d77701cc795c6679118164b10cc99902c538ce06291c104e64c9992ac1c98409116495024942ccb922cc939e76c399de59cf359ce392739e7ecf2d5dd3f57bebaab725df76c3fe34373668d5dcd03df60df543d6ccfdbde79bffee64dcf6cf7ec201314973f1bcbb872adb1c705e72ef47ebf7bcd3fb6a52dc16de539393329e1ac4909676d4a38eb52c2599f12ce8694704e4809e7c494704e4a9033037c5cbc9353c69b4d196f63908ebccda584734a4a389b52c23935259ccd29e19c9612cee929e19c9112ce9929e19c9512ced929e19c9312ceb929e19c9712cef929e15c9012ce8529e15c9412cec529e16c4909e70529e1bc3041ce15c04963e417b9d7c7bbd725eef562f7bad4bd2e73afcb5d1bebdcbadde64a63ab8cb57aefadb6ccc6ec6079c17bafdd5887b14e635deebd16f75eb7b11e63bdc6fa8cad31b6d6d83a63eb8d6d709a6c34b6c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd825c69e606cbfb14b8d5d66ec72634f347685c772a5b1ab8c5d6dec1a63d71abbced8f5c66e3076a3b103c60e1a3b64ecb0b123c6068c1d357693b163c68e1b7b92b19b8d9d3076d2d8296383c64e1bbbc5d81963678d0d19bbd5d86d9e66b71bbbc3d89dc69eec71de65ec29c6ee36f65463f718bbd7d87dc69e66ec7e630f187bd0d8d38d3dc3d8338d3dcbd8b38d3dc7d8738d3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab1d0b1d08af31f65a63af33f67a636f30f690b1371a7b93b1371b7b8bb1b71afb37636f33f6b0b1b71b7b87b1771a7b97b1771b7b8fb1f71a7b9fb1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb77639f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb92b12f1bfb8ab1af1afb9aa7f9d78d7dc3d8378d7dcbf9beed5ebfe3ead231ff5df7fa3df7fa7df7fa03f7fa43affea3defa8fbcf51fbbd79fb8d79fbad79fb9d79fbbd75fb8d75fbad75fb9d75fbbd7dfb8d7dfbad7dfb9d7dfbbd73fb8d73fbad73fb9573bafd63eb3589e180c2ffd41427d52c740af1d5727b1fd793b3b2754ebdea3d716e7af73ebf49a71fe7ab75eeff91bdc7a83b79d896e7da2e79fe2d6a778fea96e7daae79fe6d6a779fe196e7d86e7bfc0ad5f00feac7bafd8b0e28bf5d53a57067c949f35e0ab77be5af035d0e6c037c1f9eac147fbb7017c939c6f02f8263bdf44f0659d6f126969acd1f9fa83a472257fd06e3797f476dd5cc494e4790fd9ed3631f14e4d9ef7b0dd6e3303afcd8f696e5b39c89be9ce37057c339caf097cae0bfae731677db39caf197cb39d6f1af8e638df74f0cd75be19e09be77c33c137dff966816f81f3cd06df42e79b03be45ce37177c8b9d6f1ef85a9c6f3ef82e70be05e0bbd0f916828ffacb45e0bbc8f916838faeed5ac047d77917808faef92e743edb4f4ccc403ce7a73e2a8c47fd33f81e4f7d33f89650bf0cbe8ba94f06df52884dbe65d0af906fb9f3511f65dfeb73e5fe20a963a2101ec36b92deaed9b2ddeebae4b71bce81ad0f86b5ee87386b40ab0dae9ce0fd216d189bae63280ef9eba0bc13ea523dd283ce33c46ecf276b5d794389cff5799fcb419db511edef0f926dff3a8f679dc75c0fed67cad9a39ab3a35ecaced92ba1ae9f7b74cd331e73760f70249fb3eded9ab3a35ecaced901a8ebe71e5df78ec79cbd06381872b69b27670b79cdd9e238581044e71e7df7198f397b0c3892cfd94ecdd9d12f65e7ec7d50d7cf3dfafe3b1e73f636e0483e67bbbbf5da60d44bd939fb02a8ebe71e8dc58cc79c7d00381872f690f6b3a35ecaced9d7415d3ff7685c703ce6ec8b8123f99ced65cad976cdd9a038a71904d1b94763d4e331671f028ee473f6b08ecf8e7e293b673f0e75fddca3f992f198b3ef71653bcff06d37cfb0007cdf71be85c09b7c6e1f6963caed36cdede2bd1e41109da33477371e73fb1157b679fc3db8f7807cdfa7fb12c0f703e7bb107c3ff4eed9603a06baf418187d9bca3d067e0675fd5ca679e4f1780c7c07381872b65b7376f46d2a3767ff0275fddca37b1ac663cefe12381872b6477376f46d2a3767ff0e75fddc5beacae33167ffe6caf67ae127ee7a6139f87eea7c2bc0f733e75b09be9f3bdf2af0fdc2f95ac1f74be75b0dbe5f395f1e7cbf76be36f0fdc6f90ae0fbadf3b583ef77ced701bedf3b5f27f8fee07c5de0fba3f37583ef4fced703be3f3b5faff3d9f92ebaf7ea4bce67f72d69d41f24bb6fe91e4bda36adaf1c83d84d5eeca6318cddecc56e8e88bd8a21761662d092f1d6fba1bc8a97279f031e8cb53af958edb6edadc1e8dbbe1a78f20c6dcf428cd1f0e481a72d799ef0fc59487ebbe13e6ef534cd42ac5668573b43bb32108bb64deb142f073eecbfdb23183b92672c6420166d9bd63b80917c783ea1f33a1d3ff67cb82433cccb702c85d744148f9eff441cabc14f751e9d31ccb6dcb135c2fb786e6df37c4c7919e605c5a26dd33ac56b84f6b48d3d6361b48c798f91ab8fc8402cdab61f1b8ff75563afd9a8f66b0e7ce7a14f2a54da273502db585ca7c4ed6b29b139ce571988417d1b695e003fd599e57e9060fbb6edd0ef321c7f8572afdfb03f483e8f0b793cae47c3d30e3c1cc73ed3f19ac7f3fe3f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fc26d55b2984917c05e0e118e70f9f01e5b645dbb7f33a3f86799de4e72d0a799cb3a47b0c97796dae833a7fcd0cd7fd39cca7fb738338a7b99257bb51dd67d1189c3b17cb398718370f1c357fd99258ecc261aef936fb0c15fb1cb2564fd795119a32dca73242d38ca729dea7b8c2e3b1793ab776988d63eeafdcb948d48aca49ceede13d06bcfba5d87f502ed40423fb0f3ccf74251e7be41c26cd977779b1eba0ceff6486f70ddd8b4affebcebfe7c9d6e9f6b64d9f5906fe6e6fdb4deeb3c451ef6dbf153e4b75fe0ffad4d7d704ffd48ce3fe0fec9703682b2efd50c679f3e4cfc3c579fcf632783a8187a39f61badec8e33190f43c7eb7a755d4750cd5e902fdba19f48bba16a5758aa7cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccf299f1b7a2c49a857a05218c6374ef43389f41cf7fa1eddb799de7d60cc7e59e87a339a7e55e9beba0ce376b86ebbed0951b8373ef7788db970cf37925f725c56b84f6e05c10d7efb93b3c9e8e082da8dc9258ece23c7ef21a0fcfe3b77bba162234e53a5e718e1535c5e3b5cde3c1b9d1c6e0dc7b4bb2b09db1b877282e2f281e1e4b1de0a332fe3e9a633fe3b9c4bfaf87e2e1fcf5c34edba6806bdf17f29cfd460fb4a93f3837bfeba0cebba1ef7baf2be33d1c78efc82311efd3526a9e9af46379965dbe38efbb0638fb210ec65e0bac09c56ec3d819671487fc7550fe54cd705daa477a90d6c46e8f117a2618b2fb9f6bf33e97833abd11edef0f926d7f9fc7d3e731db7df201c8b347e0fccfd527f5c668b40c34a23a781dc475eef4efaff4ef2bc47eb4c1ab439fad833a5f823e2aeefed1a87300f7798cb61d751ef3cf0ba3b9cfb3daefd37a14fa8ba4efd37a147208efd30abced2f87ed135743107f6ea13a3ff5b6ef5f93d367f03e30aaf30be82f9adc3d8b8dc1b9d7df78cfd4587cbf8abb4f9ae2e1750dbd379ab65be61ea8df9f2033e604b2e07502d5f993b7cfba63b857477cf6af319f25ad56b9327e7ff1f5b33af4c267fa13d1a178ccf7796da1bcee85b6509dfff2ae0193bf6e295e0326dfd691d724d40f7444b495eafc371c6b7f876b3cda4ff8bda3a1f6dcf76929750d48fad9368ff5f38131b684e703d7d70ed7f59ff34b5a97fb7ce02eef73129f0ffcbf90670d701f3a575fbd3646a3e5a011d5c1df06d179049fe51b35d671bebe4fe3b514f6cf4da029d7ef0efcf39f3fae16758db0dcd318af116638e626a7b35fd71f2fa4f36592f70de36f255a212efe56a29549cf3ce8d60feb785d703e63e79962c73d733a3f06b1e39e393d16b19bbdd8cd63185b3557cd2569cef04ce4f0f767f8cc52bb94ba2e25861c7cae26058cb52960ac4b01637d0a181b52c03821058c1353c03829058c9353c09805c6f3796e67d0a750a93e5cfbabd4b506c65ec5a44539ffbf83f97fa994bcf6c1d80cdfe9422d5605a3d702bfe7713cfba1dcfff5420cf8bf0ba6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a185b52c078410a182f4c01e3e352c078510a181f9f02c625ca9808e30a5ec642a58c9687e37ffe3d96ff39c6c0938fbae794e9fed9b2ffdf1af3f349db2a7d6e1cde5bc2fb3fe11edbb3ed38ee1d29f7d976a5fedf2a1363a15246ae7b81f0bea3d1f044dd1fd4c6cb58a89491ebf72ff81bbdd1f07481669d119a3130162a65e4ba57aedc7b39f19efeae08cd18180b9532e27dd509f2849a7597c1d3039a754768c6c058a89491ebbee42cc4180d4f2f68d613a1190363a15246a6dfb6859af596c183bf01eb8dd08c81b15029a3e559c3a4595f193c6b40b3be08cd2431224fd2cfc9ee8b88c5f19bc172db4e0cc83829058c9353c088f74970f45fa5ee93e8e3d5a750a93e5cfbabd47d12189be1f731a116f87b887fa5c53a5e9e92f74960ecf54c5ae0ef55fe9516eb8187e3f7335988311a1e62c8c1e7a6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a18f1bb2ac3b562c9ef2febc779ecb8ef2ae33d76dcf792f11e5bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73c97143b0d63fcca38fe1891a725399e3cb61d63f50b687b7f044f86a9ed186ba380b61343da1837a480714d0a1855c7e23d8895305a9e4d4c3c1bcbe0d9043c9b99783695c1b31978b624cf13e6d4e632788821079f5b9302c60d2960541d5547498caa63f5e8a88ccaa88cca783e18d3d0872b632af2b15029a3e5d99a3c4fa8d9963278b68266f4b9b61430f6a78071032f63a15246cbb32d799e50b3ad65f06c03cde8736dbc8c854a192dcff6e47942cdb695c1b31d34db16a1190363a15246cbb323799e50b3ed65f0ec00cdb64768c6c058a894d1f2ec4c9e27d46c47193c3b41b31d119a3130162a65b43cbb92e70935db5906cf2ed06c6784660c8c854a192dcfeee47942cd7695c1b31b34db15a1190363a15246cbb327799e50b3dd65f0ec01cd764768c6c058a894d1f2ec4d9e27d46c4f193c7b41b33d119a49655c9302c60d296064d6b15029a3e5d9c7c4b3b70c9e7dc0730913cfbe32782e019e2724cf13e6d42565f010430e3eb726058c1b52c0a83aaa8e921855c7ead15119955119cb63ec4f01a3ee6b6594cac8f0fdaae46f912e19e7b19bbcd84d55123beeb748e33db6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae792e29f6fee46317ca7dc6cc7ee0e178e60d533bf376bb97ba6dfd2341fdac5697795a5de26995833a97827e9731e89781b8b46d5aa778e5325f2c80992976618ad9c624683fc5d8e0e961e35fced4f6b8befef2711e3baeaf1fefb1e3fafaf11e5bf35cf3bc1a626b9e6b9e57436ccd73cd7329b1b15c1f0c5fb7d3f34fed369ee8ca756e1d59c94f75ae9a507c6d0af418e288adc7909e2baa21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad792e2fcf311f6ac68027f07882123cfb84f12c12c6334718cf34613ceb85f14c12c6b34c184fad309e9dc278b609e3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67a3309ec9c278ea84f1e485f12c11c6334f18cf58fc9ea11c9e19c2785608e3c90ae3d9248ca75e18cf6a613cbb84f1f409e3d92e8c67a9309e5e613c5dc278da85f16c11c6d32a8c67be309e99c2781a85f1e484f13408e359258c678f309eb5c2781608e399258c678a309e26613c1384f1ec15c6b35b18cf3a613c3b84f16c15c6d32d8c67b3309e0e613c2b85f12c14c6335b18cf54613ccdc278260ae3c908e0c906e73e932c0befef075f8df7597bbd3477e6f0fb57387f0d7ce64a57ae8dd8f615e0a3df865f19f159d4e90a684bbf2be71fdb12ea84b1fa619de23502c7954278260ae36916c6335518cf6c613c0b85f1ac14c6d3218c67b3309e6e613c5b85f1ec10c6b34e18cf6e613c7b85f14c10c6d3248c678a309e59c2781608e3592b8c678f309e55c2781a84f1e484f1340ae399298c67be309e56613c5b84f1b40be3e912c6d32b8c67a9309eedc278fa84f1ec12c6b35a184fbd309e4dc278b2c2785608e399218c67bf309e79c2789608e3c90be3a913c6335918cf46613cd385f1cc15c6b35c18cf62613c05613c9dc2787a84f16c13c6b353184fad309e65c2782609e3592f8c679a309e39c2781609e3d9278ca7268287e1ff5f863c74ff1a6d9bd6f70b89cdb01fc2fffb7915539bae76dbaa77db257e8a5707750eb98ed4ce4fe36789cbbfdf10bf9b5f0d1a5dcdd416da1f196fff70c7c6fb2a0360083c7d82081e8efb5199da39220f13fcffb379abd5359e56febecb419dab40bf6b18f48bca6d5abf0678e83c4eac59a8b75e0823f92e67e6c9429b6929750c5c033c1cc724533bc35cbdd66bd3fa08dda90ee6eab50ced8c3a7668fd5ae0d9e8cac49a857a1b853092ef6a669e2cb4999652b97a2df0701c3b4ced0c73f53aaf4d1b2374a73a98abd731b433ead8a1f5eb8067932b136b16ea6d12c248be6b78793ab2d0665a4ae5ea75c0c371ec30b533ccd5ebbd366d8ad09dea60ae5ecfd0cea86387d6af87fda0ccca1cc56c79e87704c49a857a9b853092ef5a569e8e7c16da4c4ba97eec7ae0e1e8e799740ffbb11bbc366d8ed09dea60aedec0d0cea86387d66f8888dd1224abc58da3d0e2c6089e1bc7580b8a572ef3552964569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a1e778126b16ea6d11c248beeb7879c2df056d09462e196fbd1fca3702cff50cfa30b533bc87fc80d7a62d11ba531d3cbe0e30b433ead8a1f503b01f0e94c17c430a9955e7ca982d0ffdff0c62cd42bdad4218c9773d2f4fd88f6d0d462ea5fab103c0c3d1cf33b533ecc70e7a6dda1aa13bd5c1e3eb20433ba38e1d5aa778caaccc71cc96879ecb46ac59a8b74d0823f96e64e52984bf6fdc168c5c4af5630781e740e23cc57e8c41f7b01f3be4b5695b84ee540773f510433ba38e1d5a3f04fba11ce61b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73f5e86c79e8ff5f126b16ea6d17c248be03ac3cede1bcc3f660e492f1d6fba17c08780e26ce539c7760d03d9c7738ecb5697b84ee54078fafc30ced8c3a7668fd30ec87f1ce7c430a993537c68659734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426e589e1dae4cac59a8b7430823f90ef2f284cf3dd8118c5c4addb77318780e31e8c3d4cef0be9d235e9b7644e84e75f0f83ac2d0cea86387d68fc07e5066658e62b63c3b5d9958b3506fa71046f21de2e509fbb19dc1c8a5543f76047838fa79a67686fdd880d7a69d11ba531dccd5018676461d3bb43e00fb419995398ad9f2ec726562cd42bd5d4218c977989727ecc77605239752fdd800f070f4f34ced0cfbb1a35e9b7645e84e7530578f32b433ead8a1f5a3b01f945999a3982dcf6e5726d62cd4db2d84917c479879b2d0665a4af563478187a39f676a67d88fdde4b5697784ee540773f5268676461d3bb47e13f0ec716562cd42bd3d4218c937c0cc938536d3522a576f021e8e6387a99d61ae1ef3dab4274277aa83b97a8ca19d51c70ead1f039ebdae4cac59a8b7570823f98e32f364a1cdb494cad563c0c371ec30b533ccd5e35e9bf646e84e7530578f33b433ead8a1f5e3c0b3cf9589350bf5f60961241ff663fb9878721e4f2e428bf118bbc98bdd5425b19bbdd8cd55125bf35cf3bc1a626b9e6b9e0755105bf35cf3bc1a62576baea9e6d5a979e63c6a9e398f9a675473919aff23b9d89dd8afd4402c86f1b9b6d18c3922cf22613cfb85f1cc11c6334d18cf24613ccb84f1d40ae3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67b2309e3a613c79613c4b84f1cc13c6334318cf0a613c59613cf5c278560be3e913c6b354184faf309e2e613cedc2785a85f1cc17c63353184fa3309e9c309e06613cab84f1ac15c6b34018cf2c613c5384f13409e399208c679d309e6e613c1dc278560ae359288c67b6309ea9c2789a85f14c14c69311c0930dcefd6d07fe9ea0167c747fff3ef03dc995f783af2622066de738f868fc94b661cf5717cd3c97a1063e737304d79322e2519c9b233e3b16ba63ac7e58a7788dc071b3109e89c2789a85f14c15c6335b18cf42613c2b85f17408e3e916c6b34e18cf04613c4dc278a608e399258c6781309eb5c2785609e36910c69313c6d3288c67a6309ef9c2785a85f1b40be3e912c6d32b8c67a9309e3e613cab85f1d40be3c90ae359218c6786309e79c2789608e3c90be3a913c6335918cf74613c7385f12c17c6b358184f41184fa7309e1e613cb5c2789609e399248c679a309e39c278f60be359248ca72682673f134fdcf314f60b886dd7f3a08b5db2f0fe58fc2e68bfc748ebc78011798927cfc413f70c8abc80d8b6fd347640732859781f7fd7c19553798f91d6a3720aef6b5ccdc413f7dc8ed502625b2d68ae82ee01c8c2fb781f33574eadf618693d2aa79a7979c2ff1fb02a18b994bad7088f398e7dc8d4ce3c1e7f093e4323f219c9ab3cadf019aa63f11c89b8fe80e229b332c7315b1e9a6b22563c9f8dc5efa846c318757e65e009fbc7d660e452aa7f3c063c1ce70fa67686fdd809af4dad11ba531dccd5130ced8c3a7668fd4444ec9620592d4e8e428b93113c27c7580b8a572ef3fe14324bd0d9f2ac746562cd42bd954218c997e7e509fbc795c1c8a554ff78127838ce1f4ced0cfb84535e9b5646e84e75f0f83ac5d0cea86387d64fc17e2887f9440a9955e7ca982d0fcd89106b16ea15843092ef182b4f219f8536d352aa1f3b053c1cfd3c93ee613f36e8b5a910a13bd5c1e36b90a19d51c70ead0fc27e5066655666655666655666655666655666655666655666655666655666655666d9cc96877e3b4cac59a8d72e84917c2759798af30eedc1c8a5d4bcc320f070cccb30e91ece3b9cf6dad41ea13bd5c15c3dcdd0cea86387d64fc37e5066655666655666655666655666655666655666655666655666655666655666d9cc96879ed94eac59a8d72184917ca77879c2df6d7504239752f30ea78187635e86a99de1bcc32d5e9b3a2274a73a98abb730b433ead8a1f55b603f28b33247315b1e7a761cb166a15ea71046f20db2f214e74f3b83914ba97eec16e0e1e8e799740ffbb1335e9b3a2374a73a98ab6718da1975ecd0fa19d80fe5309f4821b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abced5a3b3e5a1ffb148ac59a8d72584917ca75979dac37987ae60e4526adee10cf070cccb30e91ece3b9cf5dad415a13bd5c1e3eb2c433ba38e1d5a3f0bfb61bc339f4821b3e6c6d8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbd3edcac49a857add4218c9770b2f4ff8dc83ee60e452eabe9db3c07386411fa67686f7ed0c796dea8ed09deae0f135c4d0cea86387d687603f28b33247315b9e1e5726d62cd4eb11c248be33cc3c5968332da5fab121e0e1e8e799da19f663b77a6dea89d09dea60aedecad0cea86387d66f059e5e5726d62cd4eb15c2483e3cc7f532f1e43c9e5c8416e72bb65def73e546f79a85f7fb8091ab6fe9f518691d731c7989a78f89a7c9e3698ad0e27cc5b6ed5febca53dc6b16de5f0b8c5c39d5e731d27a544e3501cf5a269e668fa739428bf315db6ab1ce95a7bad72cbcbf0e18b9726aadc748eb5139d50c3ceb9878e2faa47563103beef81a8bd871b93216b15573d55c3557cd3935cf9c47cd33e751f38c6a2e4a7386eba870ec946204c0804b3f94f1bb02c7b527533bf351dfc7d6796dc2ef6338e670bebe6f28b332c731338d5b7464bdd8a44fe0f1d032c4acc5588e41f6796d923606592ef3891432abce9531dbd8b7251fbb23ebc5267d028f8796db98b5606a67d81fdc1e446b4cf1725007f3f476867666202e6d9bd66f87fd500ef3891432abce9531dbd877241ebbf86c768c4dfa041e0f2d77306bc1d3ce627f706710ad31c5cb411dccd33b19da9981b8b46d5abf13f683322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9c78ece2f83dc6267d028f879627336bc1d3cee2f8fd5d41b4c6142f0775709fdfc5d0ce0cc4a56dd3fa5db01f945999955999955999955999955999955999955999955999955999955999955936b38dfd94e46387bfc7c1d8a44fe0f1d0f214662d98da198edfdf1d446b4cf1725007f7f9dd0cedcc405cda36addf0dfb419995398ad9c67e6ae2b18bf379189bf4093c1e5a9ecaac054f3b8bfdc13d41b4c6142f0775709fdfc3d0ce0cc4a56dd3fa3db01fca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569dab47671bfbdec463b787e3f7189bf4093c1e5aee65d682a79dc5f1fbfb82688d295e0eea609edec7d0ce0cc4a56dd33ac5ab06e6132964d6dc181b66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f2df9d8e1efd93136e913783cb43c8d590ba67686f7bfdc1f446b4cf1725007f3f47e867666202e6d9bd6ef87fda0ccca1cc56c633fc0103bebc5267d028f87960798b5606a67d81f3c18446b4cf1725007f7f9830cedcc405cda36ad3f08b151ef846287f740528c1af76a7d4f77e55af03dc395ebc0f74c57ae07dfb35cb9017ccf76e509e07b0eb4877ccf75e515e07b9e2baf03dff35d792df85ee0ca7de07ba12bf782ef45ae3c04be17bbf2ade07b892bdf06be97baf2ede07b992bdf01be97bbf29de07b852b3f197caf74e5bbc0f72a577e0af85eedca7783ef35aefc54f0bdd695ef01dfeb5cf95ef0bdde95ef03df1b5c7909f81e8af0bdd1959f06be37b9f2fde07bb32bef07df5b5c7912f8deeaca93c1f76f50a6d7b7b97223f81e76e51cf8deeeca53c0f70e576e02df3b5d792af8dee5cacde07bb72b4f03df7b5c793af8deebca33c0f73e579e09bef7bbf22cf07dc0956783ef83ae3c077c1f72e5b9e0fbb02bcf03df475c793ef83eeaca0bc0f731575e08be8fbbf222f07dc2951783ef93ae8cfbf7df5df901f051bff220f8a85f793af8a85f7906f8a85f7926f8a85f7916f8a85f7936f8a85f790ef828ef9e0b3ecabbe7818ff2eef9e0a3bc7b01f828ef5e083ecabb17818ff2eec5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828ef1e021fe5dd1bc14779f726f0b5b8f29bc177812bbf057c17baf25bc1f73857c67ee622577e1bf81eefca0f838ffac2b783ef62577e07f896baf23bc1b7cc95df05bee5aefc6ef0ad70e5f7806fa52bbf177cab5cf97de06b75e5f7836fb52b7f007c7957fe20f8da5cf943e02bb8f287c1d7eeca1f015f872b7f147c9daefc31f075b9f2c7c1d7edca9f005f8f2b7f127c741ea77ec61ecff6b8241d4823eba336b746b4857c13a12dfd41b2d774148bb64debedc048fba030f68c85d132b6798c96a7934133cc2b5a4a7dffe8049e0e061ea67686df3fbabc36b57b6dca419d8ba19d5d0cedcc405cda36ad77416c8e7d8e5ad4bbed2ef5b4a8833affe14e72f67c5a4a47da86cddf42445b7a99db42dba67ea9770c62777bb1f35e6cec8f6929757c7503730f03b3dd6e5ff2db0d8faf356e5b945314270f6d5a0b1a24d5268c9d714671c85f07e59a99c375a91ee941e72f62b7b94cfb12d9fdcf757a9fcb419dde88f6f707c9b6bfcfe3e9f398ed3ef9fb8c610e86e321cc815e8f83d6f3a05d5f8c76bda01dd5c1f35f1b93763d1e0fadb7010f5de374818fae15881fafb35ac780dbeff7ba22b8c9d70d8c6d118cf9e419c36b9d368f91d6f3c048be1ee0e966d2ccdfd74b3d7df0bcdce0d5a1cfd6419dd9ae2f690a467effa0baf6b85b92196e177d07ff47906c9fdec0a0178e0f04a04fe06918805ed4ce7a069ec9c1f018c1d9a1c133076f1ab874e0e0910ca0d57998f89a8968460df8b05c1be10b8291432138244b432138245be3c982433054df7e95b2cda2e1868193c7879e786ae0d4e133779e1e1a38b267f026a4aef7e89134ae05488a3e5a2606c38336fd41b2c9d3e0c52a953c13e17502030f533bc393de24af4d0d5e9b7250a71ede9bc4d0ce0cc4a56dd33a0e00930fb393dec709831aaf2d98c593e0d5dfb7893688023e0eb69f7170f6bd3a276c83832771a9c7b057717627d85142db53db51403bea670f3b3baa672f8c6c476e47e9eca89c1d85b3a36e7694cd8eaad951343b6a6647c9eca8584b501cf5ba1078be048c7654cb8e62d9512bfb4dd29e15ec28941d75b2a34cf66ac27e4bb167607bc569cf86f62c68af76ecb729fbcdda9e61ecd9db9e99ecd9c45e1dd9ab227b156bafeaeccccc7a631b9cd61b8d6d32b6d9d816635b8d6d33b6ddd80e633b8ded32b6dbd81e637b8ded337689b12704c511e54b8d5d66ec72634f347685b12b8d5d65ec6a63d718bbd6d875c6ae377683b11b8d1d3076d0d82163878d1d313660eca8b19b8c1d3376dcd8938cdd1c14eff03869ec94b14163a78ddd62ec8cb1b3417196c8ce0ad959203beb636779ecac8e9dc5b1b3367696c6cecad859183beb726f509c55b1b3237636c48e84db916f3bd26d47b69f191447aeed48f57382e248b41d79b623cd7664d98e24db91633b526c4786ed48b01df9b523bd7664d78ee4da915b3b526b4766ed48ac1d79b523ad7664f5a1a038726a474aedc8a81d09b5239f76a4d38e6c3e1c14472eed48a51d99b4239176e4d18e34da91453b9268470eed48a11d19b4238176e4cf8ef4d9913d3b926747eeec489d1d99b323719f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f06c59cfcb2b1af18fbaab1af19fbbab16f18fba6b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b1478dfdc8d88f8dfdc4d84f8dfdccd8cf8dfdc2d82f8dfdcad8af8dfdc6d86f8dfdced8ef8dfdc1d81f8dfdc9d89f83e1517bec28feee566804f9e0d0d0c0c9d3432d43832d276f3d3174fcf4893b5b6e3f3e74ac65f0b68133474f0cde8e1f7e9beb9a68787ce3993307ef6c397eeac8c01d2d83b70eb50c1e6d393478eba92367f1435f741f5a706ec483478ec407fb61cd6320fd498541ffe83e47130f3b4bb7ed2f9508f29f957c687a6d650dbad29d59e85be965c5abb896b32706875af22da7ccdf8327cc67068eb4b6e07b678dc867875ace0e1d3c33d472f4cce0c996b656dceec1491534e26f332af8d0ac99a36f79f0ffaa88c27fb1020400", "isInternal": false } ], - "packedBytecode": "0x000000028df71de500000047d21f8b08000000000000ffed9d779815c5b6f67b604064cf8898b3830915c56118e20cb03127cc2822220cc3080a0c51cc98250773468292b380802020a227e7e4497a3c9e74ef3de73cf78ffbddfb05bfdbb577ad3bef14d5c3ecb16bf3eed9d5cf53b3abd754f7fad5dbabab53755741909efe19a6029d6f19a6b3820327f97f52ff967eb3a94b8ceb2a75c95990239c2d7284b3658e7016e60867ab1ce16c9d239c87e508679b1ce13c3c464ec5d622a83fc5cddbd681ae713326724cd3a21cd0b438c7343d2207346d17e4461b75648e70b6cf11cea37284f3e81ce13c2647388fcd11cee37284f3f81ce13c2147384fcc11ce937284f3e41ce13c2547384fcd11ced37284f3f41ce12cc911ce0e39c279468e709e99239c67e508e7d939c2794e8c9c9d80b3a3fe3d57ff9ea77fcfd7bf52f602fd7ba1feedaceb58a8e72f525c61520f69ca8cff750d537998ba85a9bbf1bf1e61ea19a65e61eaadff57a2ff5711a6ca30f50953df30f5d31af40fd3c561ba244c9786e9b2305d1ea62bc2746598ae0ad3d561ba264cd786694098ae0bd3f561ba214c3786e9a630dd1ca65bc234304cb786e9b6300d0ad3ed611a6cb0dc11a62161ba334c43c37457988685697898aac234224cd5611a19a69a30dd1da651611a1da67bc2746f98c684696c98c685a9364ce3c334214c13c334294c93c334254cf785696a98ee0fd303617ad0d0eca1303d1ca647c2f4a8c1392d4c8f85e9f1303d11a627c3f454989e0ed333617a364cd3c334234c33c3342b4cb3c334274c73c3342f4cf3c3b4204ccf85e9f930bd10a617c3f452985e0ed32b617a354caf85e9f530bd11a637c3f49666911d616198de0ed3a2302d0ed392302d0dd33b617a374ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2f45e983687694b98b686e9fd306d0bd3f630ed08d30761da19a65d61fa304cbbc3b4274c7bc3f45198f685e9e330ed0fd32761fa344cdf0ad3b7c3f49d307d374cdf0bd3f70dcd7f10a61f86e94761fab1b6fd44fffe549795fb773f0bd3cf75fe17faf797faf757faf73363995f87e93786edb761fa9d61fb7d983ed7f92ff4ef1ff4ef97faf78ffaf72bfdfb27fdfb67fdfb17fdfb57fdfb37fdfb2ffaf75ff5efbfe9dfbfebdf7fe8df7f8669538774be4d5037258398daa8f29ad4b31f11bf63507f525ab4d4ff93df126d2fd4f3f22bdab5d2f3ad0c7b6b3ddfda584f1b3ddfc6b0b7d7f3ed0dfbd17afe68c37eac9e3fd6b01fafe78f37ec67e9f9b3c09e08e0deb0b62b5b4b6d2a009bc46b0bb0b5d2b696606b2dab03db61dad60a6cb27d5b83ed706d3b0c6c6db5ad0dd812da76b86819a6226d4b0671c54ae970b5dee2b8d7ab9f971d113fef08b5de768e788f8c9f77a45a6f7b07bc2a3e8ed2eb3a12e2e6686d6b0fb663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ed346d3b056ca76bdba9602bd1b6d3c0a69bdce074b09da16d25603b53db3a80ed2c6d3b036c676bdb99603b47dbce029bb4bf67834dce17cfd136d5761c5e00cb68bbb45ba965a4cd06db79d25e83ed7c69abc1d649da69b05d00bec57621b43562ebac6dd26ea9fff5d6f96410d77e5256a3d65b11f77ac335abf5f6897fbda9678e7d833aad93e0a702b4eaa7f331f66bea82be0b74123f622f84fcd55056ca891e72ec1176758ca9d4f97e0d2cd7db58ae18ca545aea9f0ce2ad7f1f83a78fc1dc0af26e62b66b571fb38d9e328ed94150d68c3d390f6a8e313b00381cc46c0f1fb38d9e328ed91a286bc69e9c0b37c798bd03381cc46c959b982d2bf5319bbe6f1604f6d893eba1e618b3a38123fe98ede663b6f153c631fb049435634fae899b63cc4e058ef863b647953f3768f49471ccce87b266ecc9fd99e618b34f03878398adf1ed6ca3a78c63f62d286bc69edc2b6c8e31fb3c70c41fb3bd1cc56c571fb341fa196810d8634fee5b37c7985d041cf1c7ec087f7fb6f153c631bb1dca9ab127cf509a63ccaed379f59ce127fa39c32960fba9b69d0abcf1c776753747b15de6633bdd372408ec312acff39a636c7fa8f32a8e7f01fd11c4f64b6deb00b65f69db1960fb4cdbce847a39d807aafc3ed0e829e37de03750d68c6579b6dc1cf7811f01878398adf631dbe829e398fd1b9435634ffa3934c798fd3d703888d91a1fb38d9e328ed9ff84b266ec9dabf3cd3166a5afa93a5ff8429f2f9c0fb63f685b27b07da96d1780ed8fda7621d8bed2b6ce60fb93b65d04b63f6b5b29d8fea26d5dc0f6576d2b03dbdfb4ad2bd8fe45dbcac1f6afdad60d6cffa66dddc1f6776deb01b67f685b4fb0fd53db7a699b7ade257dafe4bcb50df0278378b7adf4bb9475cb7c972cf86e67f86e9745dfed0ddfed2dbecb1cf84e800f990a8cf924e4cbdcf29416030ffa2a8fdf575755f7ae41e3eb5e0e3cdd1cd43d013e1ac3d30d78bac7cf93eaffdb23fef5a6b6715743d304f8ea0af5eae9a05e05e04bd62df3e2af186cd8b6f6b430f68a9fb1ac007cc9ba65be17308a0ddb7a79e74af61f753cec5850c7eb605f4a9d13893ff96e997094835dca5cd5a18ead93662b82ffe371afbb61731497a9b8105fb26e99177f45509feed9672c6b2c633783d1551b5100be64ddde77dd76903c1ec71d5ceb58db34f15d9105dfbd0cdfe5866f6c3b656ae8d8d60b9863bfe6d4c7b6caf8d75b8ad727726d287ef0fc01afe1e2aa13fa966b43f123f642c85f57505756ca891ed20e0bbb8a65d996c86e2ed7d358ae18ca5458ea9f0ce2ad7fa5c1536930ab6d72091c0b1dec0fa918a8303864be1cb4ab8cd0ae02b49332e78276aedab3de068fcc77071e69c77a008fab6ba2289e6c5c8f1dcc379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6572f60b49dab38b89e69f05ca51b308aad37f07475a459d476ed4ae2db41aca4da23f121e7e6b2ff7607bb94e9a55fa8536de53dd056ba88118c47991a7bcd1bff762a4b5d8377cb8007b79d83ebaa2e8ee2b114efdf7c1dc41b6b66bbd4cdd02aea1e8fabb6bcabc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae3b09a3d9ffcdd57dfed4f70ff5ba64fdeab9ceff71da1facac14fbc7483f88f38d3a174299e2167565ff3ff407339f53611fc9ee6eb54b6d4bec8f998479f1877dad705b32f4772a89cd77d90857cfdbd437c0d47734cdbe9fdd2d9abae8ff8c9a16189a627ffc0b0c1e15a7952debd85c3cfbcbf459246a25f9389fed1507f6588f7fbb94d57b66dd22a8df7ee071c655ff1d69abe5797985e1bb10ca9cdca26edb48df2a1963b8abb11cf6fb9175cb32e783bdd258773bbdac70b432d6df03969532a7419bbaa7459d660edacab24cfbaee373f3f88fc3e9e7f85d33e0e9023c2eda1947e71ba5b80fc4fd1cdfec9f663b8f9132d8b7cf41bfca06fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd796933066a9ef43ea79867cab4cd69ffa5e708b3abfae9fc3c933a74e469df1ddd17fb6a82bbb49e78b8203fb3b446d4b57dfa788da96e20fbf3d83cf825c3cd72d005fb2ee328b16922f89cd77fa39be8bb121e4397e5743d7728ba6aef6577cc68a9ae2fedacde0c167a351dff629336c2efb0e45c585f8c37da90c6c92c7f7a35d6c673c9698fd7ac41f3ebffe8ed6b65de06adb9795ba6c37f0bb29c9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2d8075c9f6b57ddbb33fb0c6e4bb0baeab40a7fe86068590ffbc455d59292765456b6157fb887c0306d9cde5ba19cb154399be96fa278378eb6f7e6bb59fc1acb6c9cf20cebe80e3bfab36a96f8446e7834652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3cf3bd9fd67f417b11773fadff8218c27e5a81b1fe4eb07ee16a1d441f5ba4ccff33d66f9e93cb32d80fec7ff613f89e4b99ce67724e7ea8aeaf6ce7e4b85c54dd15337e072d192333c604b2e079829469abb5966d5619c1ddcbb26c71c4b2a295f9adb0a2e040fddc7c672dbdcff733ea22718ddf20973247435ddc9cb7a4cf015d7d532e097552f9324b5da5cc09b0af9da4f309d84eb8df9e67f9bf4c0d9d03e218ee17c75fe7d4f6bd043893e0077d5f0aac31f9ee82bee51c50fc88bd10f2e7b6ac2b2be5440fd15ad8d53e22e751c86e2e57612c570c65fa5bea9f0ce2adffc506cfc506b3da26a7429c9d07fdd05db5d5fd2334ea041a4919bca768fb0ea8ed5e87abf737a2cea5f0fd25f3fc0a8f936ece9bece7b1e67d35db394227831fcf117a403b9bb09435ef17caf132ce7ec3f8ae440ff08bef4ab8fa76736fd02d09f3785e70287dbbf88eadf217356642ef2cf88e1a33211bbedb1bbedb67d1b7d7dc6bcea4b983310852ef9fe1374bd5d4d079298e4b20cbb500461763392482fadf1e3f18238eef20cbb5044617c7874cbf7dde031865b9426074f16e298ebfd11846fcc6301ee785d1c1b762bb34f55bb1784faf353032bdb389cfa60e034617e7c54d7d570fcfe7dbc0afab7189ba66c058068cb2dce1c0e8e2de385ecb348611af8b64b9b6c0e8e21956a6e33be1b7e7f1deb24bc6868eed8efba294657aefa5d22d4f83e71ae8dbc1b886292df03ee3c1b4e8e396a7c1731ff4ede0be5f4a0b1c67f0605ae0b34117e31e2682facfe10ec683cf2f65b9a38031e988b15f068c4960fc9f7bc5c0d8df11633203c6fec028f66380d1c1fdd71463ff0c18f13ea52c772c305ee288f1e20c182f014659ee386074712f35017e1bc3782930ca72c703e3658e182fcd80f1326094e54e00c6cb1d315e9601e3e5c028cb9d088c573862bc3c03c62b8051963b0918af74c47845068c5702a32c7732305ee588f1ca0c18af024659ee1460bcda11e35519305e0d8cb2dca9c0788d23c6ab3360bc061865b9d380f15a478cd764c0782d30ca72a703e300478cd766c038001865b91260bcce11e3800c18af034659ae03305eef88f1ba0c18af074659ee0c60bcc111e3f51930de008cb2dc99c078a323c61b3260bc111865b9b380f126478c3766c0781330ca726703e3cd8e186fca80f1666094e5ce01c65b1c31de9c01e32dc078b38571a023c65b32601c088cb2dc05c0786bfc8ca96be9811930de0a3cb7c5cf93d2ecd60c786e73cb93faaedead165fb7c7ef2bb52d06058daffbedc033387e9ed4b6b83d031e612886e550b33be2674c69363803c63b806748fc3c29cdeec880670868768745b33be3674c69362403c63b816768fc3c29cdeecc8067286876a745b3bbe2674c69363403c6bb806758fc3c29cdeeca80675850a7d95d16cd86c7cf98d26c58068cc381a72a7e9e9466c333e0a902cd865b341b113f634ab3aa0c1847004f75fc3c29cd4664c0530d9a8db06836327ec69466d519308e049e9af879529a8dcc80a706341b69d1eceef819539ad564c07837f08c8a9f27a5d9dd19f08c02cdeeb668363a7ec69466a332601c0d3cf7c4cf93d26c74063cf78066a32d9addeb88f19e0c18efb5f0c4fd9dec7b2cbec63aaafb98a0f175178662580efb498c73c4383603c671c028cb613f895a478ce33260ac0546592ee198b1a17e12b5e07b7cfcbe53ed526dd0787dc6bbe569b09f04fa9ee0488bf141e3b598e096a7c17e12e87ba2232d26048dd76222f04c72a045027c348647188a6139ec2731d911e3a40c182703a32c87fd24a638629c9c01e3146094e5b09fc47d8e18a764c0781f30ca72d84f62aa23c6fb32609c0a8cb21cf693b8df11e3d40c18ef0746590efb493ce088f1fe0c181f0046590efb493ce888f1810c181f0446590efb493ce488f1c10c181f0246590efb493cec88f1a10c181f0646590efb493ce288f1e10c181f0146590efb493cea88f1910c181f0546590efb494c73c4f868068cd3805196c37e128f39629c9601e363c028cb613f89c71d313e9601e3e3c028cbddeb98b1a1eb97c79bb9efa86b95e6ee3beabaa4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98f7326df4f38f09d001f321518f349c80b43312c77af676cd68cc853121f4f29d61d7d3d4950f7272d3c058eea8ebe9e22a8bb30e41ae31339c0786f0e307a1dd37d109bc2a8789e76c4f354063c4f03cf338e789ece80e719e079367e9e544c3d93018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193da3673c148cb9d0867bc69c88c7b2a6322a9ee9f1f3a4347b36039ee9a0992c779b5bc6b2a6322a9e19f1f3a4349b9e01cf0cd06cba4533078c654d65543c33e3e749693623039e99a0d90c8b660e18cb9acaa87866c5cf93d26c66063cb340b39916cd1c3096359551f1cc8e9f27a5d9ac0c78668366b32c9a39602c6b2aa3e299133f4f4ab3d919f0cc01cd665b3473c058d65446c533377e9e94667332e0990b9acdb168e680b1aca98c8a675efc3c29cde666c0330f349b6bd1cc016359531915cffcf879529acdcb80673e6836cfa2192be3bd39c0f8440e303ad6b1aca98c8a6781239ef919f02c009ee71cf12cc880e739e0793e7e9e544c3d97018f3014c372f7e600e31339c0e875f43a32317a1df34747cfe8193d63668c4fe600a3dfd69e9195d1c1f55583efd03cd7cc7d47bd43d3dc7d47bd43d3dc7dfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc73993ef17e2f75d96e937665e001e17dfbc7154cf52b5de17f5babe8e513fa5d54b8656cf195a1543991741bf971ce857007e65dd322ffe3265ee48c0ecc877d911e13a0e87fa8b8f270c3d94ff971dd53daaad7fb999fb8e6aeb9bbbefa8b6beb9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f18df95641dd79bb7cff54ade3159d2fd4f352fe49b04b994987a57fdb057e1f72e1dbef43fe58910fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671ce17e7180f9559e0090c9ea0019ef9643c53c8786691f18c22e31942c6733d19cf25643c0f93f19493f18c27e31941c6732b19cfd5643c1791f1f425e3994ac6d38b8c673619cf3d643ccf90f10c25e3b9918ce732329e47c978cac8782692f18c24e3b99d8ce75a329e2419cf03643c3dc878ce23e3194bc633878ce75c329e61643ccf92f1dc4cc67304194f3b329e2bc8789e22e3b9908ca7828ce731329e79643c93c978ee26e3b9838ca7948ce73a329ece643c1793f13c44c6d38d8c672e194f2d19cf74329e2a329e81643ce793f15c45c6d3928ca70f19cf02329efbc8787a93f18c26e3e944c6732719cf0d643c9792f13c42c6d3958c670219cf0c329e6a329e41643cd790f1f423e3b99f8ca72719cf18329e8e643c7791f1dc44c6938def9966c25344c6534cc6733919cfe3643cd3c878ba90f14c22e39949c65343c633988c6700194f7f329e07c978ba93f18c23e3194ec6730b19cfd3643c4792f1b427e3b9928ca7808027111c38864902feff02d85a18cbaacfbeceee50f7ff57b5bd052cf39aceb7b4acfb55b0c9b7645fb32c8b3abd0a7549ea7ce9379b523aa1af24cc8bbf22e0788d84e74a329ef6643c4792f13c4dc6730b19cf70329e71643cddc9781e24e3e94fc633808c6730194f0d19cf4c329e49643c5dc878a691f13c4ec67339194f31194f1119cf0b643c3791f1dc45c6d3918c670c194f4f329efbc978fa91f15c43c633888ca79a8c670619cf04329eae643c8f90f15c4ac6730319cf9d643c9dc8784693f1f426e3b98f8c6701194f1f329e96643c5791f19c4fc633908ca78a8c673a194f2d19cf5c329e6e643c0f91f15c4cc6d3998ce73a329e52329e3bc878ee26e3994cc6338f8ce731329e0a329e0bc9789e22e3b9828ca71d19cf11643c3793f13c4bc6338c8ce75c329e39643c63c978ce23e3e941c6f300194f928ce75a329edbc9784692f14c24e32923e379948ce732329e1bc9788692f13c43c6730f19cf6c329e5e643c53c978fa92f15c44c6733519cfad643c23c878c693f19493f13c4cc6730919cff5643c43c8784691f1cc22e39942c6339f8ca7d2c2f382231e79df5dd62df32f90f876b01d4ad57a5f7754a737f4ba5ae9f50abff82b8432d3daa67fd5f30f5c56b8ccef13e0bb396f80466f38aa8b6c8f0263fba0ef571cf936c7e793f9579ab9ef7686ef7679e2bbbde1bb7d9ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2ede0daa00cbf93265381319f843c5e2fb8f8be9ca37ad6bb4efc3a46fd94566f1a5a99d756c550e675d0ef4d07fad9ae3d655efc65cadc918019e3a22488372ede8abf4e65aadfe1e1a0eb5b86be58af858e348d3a862c6ce6bea38e21cddd77d431a4b9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fdb6cec778dd588a3ed4f345b91e781bfc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732ff1b9e6bfa7ddeeff371f9f6c7361fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe99e3dccc4b7ff17381cd557ffea858ccc6bb0487d277542c3677df51b1d8dc7dfb38f771cee47b8903df09f02153437dfc9600cf22073c8eea997ab6b1d4a8d30b469d8aa10c1ee3973aa86701f89575cbfc52e091a912785cc44163b639f2cc27e39942c6338b8c671419cf10329eebc9782e21e379988ca79c8c673c19cf08329e5bc978ae26e3b9888ca72f19cf54329e5e643cb3c978ee21e379868c672819cf8d643c9791f13c4ac65346c633918c672419cfed643cd792f124c9781e20e3e941c6731e19cf58329e39643cc3c8789e25e3b9998ce708329e76643c5790f13c45c67321194f0519cf63643cf3c8782693f1dc4dc67307194f2919cf42329eebc8783a93f15c4cc6f310194f37329eb9643cb5643cd3c978aac8780692f19c4fc67315194f4b329e3e643c0bc878ee23e3e94dc6339a8ca71319cf9d643c3790f15c4ac6f308194f57329e09643c33c878aac9780691f1bc49c6730d194f3f329efbc9787a92f18c21e3e948c6731719cf4d643c45643cc5643c9793f13c4ec6338d8ca70b19cf24329e99643c35643c83c9780690f1f427e379908ca73b19cf38329ee1643cb790f13c4dc67324194f7b329e2bc9780a087812c181effe27e0ff6f824dde517f016cefe8fc22b0b5b0f868a9f34bc156a8f3b28ec3c2f4728703d78d3ab97a2f1f7d25615efc1501c73b243c5792f1b427e339928ce769329e5bc8788693f18c23e3e94ec6f320194f7f329e01643c83c9786ac8786692f14c22e3e942c6338d8ce771329ecbc9788ac9788ac8786e22e3b98b8ca72319cf18329e9e643cf793f1f423e3b9868ce74d329e41643cd5643c33c8782690f17425e379848ce752329e1bc878ee24e3e944c6339a8ca73719cf7d643c0bc878fa90f1b424e3b98a8ce77c329e81643c55643cd3c9786ac978e692f17423e379888ce762329ece643cd791f12c24e32925e3b9838ce76e329ec9643cf3c8781e23e3a920e3b9908ce729329e2bc878da91f11c41c6733319cfb3643cc3c878e690f18c25e3398f8ca70719cf03643c49329e6bc9786e27e31949c633918ca78c8ce751329ecbc8786e24e3194ac6f30c19cf3d643cb3c9787a91f14c25e3e94bc6731119cfd5643cb792f18c20e3194fc6534ec6f33019cf25643cd793f10c21e31945c6338b8c670a19cf7c329ecaecf094a977dba5af75005c382521bf1478163ad0c7513d4bf1bb065fc7b85ea5d5bb86566f1a5a15439925a0dfbb0ef42b00bfb26e99177fb9c8ac781ed779db77201e276114db42b73ca9fdf6f1a0fed4d07efb2ef0b868d71cd533b57f2d33eaf4b845772983b1bacc413d6dfb8ecc2f83ed906bcc8ae7299d17d604947b8a84516c4bddf2a4f6afa782fa5343fbd732e071d1fe38aa676aff5a6ed4e9298bee52066375b9837adaf61d995f0edb21d79815cfd33a2fac0928f73409a3d8de75cb539e803acbd4d0feb51c785cb43f8eea99dabf5618757adaa2bb94c1585de1a09eb67d47e657c076f0cc9ed9c6ac78e4d98eb026a0dc33248c625be694a7bc34017596a9a1766c05f0b868e71de99e6ac7561a757ac6a2bb94c1585de9a09eb67d47e6575a7c9704f16ab1aa115aacb2f0accab216e22f53e62539c8ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9ebac26afb3d7d9ebec758e83d9ebec758e62f63a7b9da3981974563cf2ed4a614d40b9674918c5b6dc2d4feabda06783fa5381319f84fc2ae059e1401f47f54cf5215f6dd4e9598bee5206f7afd50eea69db77647e356c874c9857e620b3d7b969cc8a67bace0b6b02ca4d276114db0ab73ca9766c7a507f6aa81d5b0d3c2eda7947f54cb5636b8c3a4db7e82e6570ff5ae3a09eb67d47e6d7c076f0cc9ed9c6ac7866e8bcb026a0dc0c1246b1ad72ca53967abf7146507f6aa81d5b033c2eda7947baa7dab1b5469d665874973218ab6b1dd4d3b6efc8fc5ad80e9930afcc4166afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9eb9c3f3a2b9e993a2fac0928379384516cab9df2744d3d779819d49f1a7aeeb01678d6c4ce937eeee040f7d4738775469d665a749732b87fad73504fdbbe23f3eb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a6796ce0b6b02cacd226114db1ab73ca9ef1ecc0aea4f0df5db59073c6b1de8e3a89ea97e3beb8d3acdb2e82e6570ff5aefa09eb67d47e6d7c376f0cc9ed9c6ac7866ebbcb026a0dc6c1246b1ad75cb936ac76607f5a786dab1f5c0e3a29d7754cf543bb6c1a8d36c8bee5206637583837adaf61d99df00dbc1337b661bb3e299a3f3c29a8072734818c5b6ce2d4faa1d9b13d49f1a6ac736008f8b76de513d53edd846a34e732cba4b198cd58d0eea69db77647e236c07cfec996dcc8a67aece0b6b02cacd256114db7ab73c6509a8b34c0db5631b81c7453befa89ea9766c9351a7b916dda50cc6ea2607f5b4ed3b32bf09b643ae312b9e793a2fac0928378f84516c1bdcf2a4f6af7941fda9a1fd6b13f0b8687f1cd533b57fbd67d4699e45772983b1fa9e837adaf61d997f0fb643ae312b9ef93a2fac0928379f84516c1bddf2a4f6aff941fda9a1fdeb3de071d1fe38aa676affda6cd469be45772983b1bad9413d6dfb8ecc6f86ed906bcc8a6781ce0b6b02ca2d2061141b1e2f1638e22936788a2d5a1c2adf6abe42e78bf46f02fe5f018caedac30506a3cc638c23af6bcdda193ced0ccd0ea56f55ff4a9d3f42ffe2f6aa044686edd52e0b9ab53778da1b9a1d4adf4a8b3e3a7fa4fec5edd5071819b6577be071d03e97270c1e353574beb1d9b13e8eea993adfd812d875c7e39094c163f71607f5b49d4bc8fc16d80e9ed933db9815cf409d17d604941b48c22836bc4ed91a3f4f79c2e0515343edd856c7fa38aa67aa1d7b3fb0ebbe1574973218abef3ba86701f89575cbfcfbb01d32615e9983cc5ee7a6312b9e413a2fac0928378884516c5b80675bfc3ce50983474d0db563db1cebe3a89ea9766c7b60d77d1be82e6570ffdaeea09e05e057d62df3db613b64c2bc320799bdce4d63563c83755e5813506e3009a3d8de079e1db1f3a4c703421e3535d48eed70ac8f9b7aa6dbb10f02bbee3b40772983fbd7070eea59007e65dd32ff016c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6788ce0b6b02ca0d216114db76e0d9193b4ffab903f2a8a9a1e70e3b1debe3a69ee9e70ebb02bbee3b41772983b1bacb413d0bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886eabcb026a0dc501246b17d003c1fc6cf539e3078d4d4d073870f1debe3a89ea9e70ebb03bbee1f82ee52066375b7837a16805f59b7ccef86edb0db337b660bb3e219a6f3c29a8072c34818c5b60b78f6c4ce937e7e8a3c6a6aa81ddbe3581f37f54cb7637b03bbee7b40772983b1bad7413d0bc0afac5be6f7c276c88479650e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f154e9bcb026a05c1509a3d87603cf47b1f3742d4d183c6a2a30e69390ffc8b13e6eea997eeeb02fb0ebfe11e82e6570ffdae7a09e05e057d62df3fb603b3477e69539c8ec63233bcc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8aa75ae7853501e5aa4918c5b617783e8e9fa73c61f0a8a9c0984f42fe63c7fa38aa67aadfcefec0aefbc7a0bb94c1fd6bbf837a16805f59b7ccef87ede0993db38d59f1d4e8bcb026a05c0d09a3d8f601cf27f1f394250c1e3535d48e7de2581f47f54cb5639f0676dd3f01dda50cc6eaa70eea59007e65dd32ff296c875c63563ca3745e5813506e1409a3d8f6038f83b84bf1141b3c32ff09816f355fabf345fa17b7572d30326cafe22c68d6cee069676876287dabfa8fd7f923f42f6eaff1c0c8b0bdda6541b3f6064f7b43b343e95b693141e78fd4bfb8bd260023c3f66a9f05cd0e657b7828f7ed4319a75ef343a779c121d4bce0106a5ee035a7d2dcc1f1a50c8f650130e09484fca7c0f3edf87952f7e53ecd80e7dbc0f3adf879ba38aa67a95aef77803daef52aadbe6b68f5a9a15531944186ef3ad0af00fccaba655efc7966cf1cc58ce7b6c29a80729f90308aed5bc0e3a2dd5075bf50af4bd6df2a4c9f1d53e7d7c5f312bc57dc4aaf5738c45f219499505257f6779aad08fe2fdb4dd5679f6173f40e7317db733b99177f4541d6eedd36782f19b570f1bc29d3e3fe3e0bcfd7f1f194e27e8ebef63aaa7b26cffef65a7862ac7b97a8e79e7be2af7baafde8acd725eb57fbe8bf1fe354f372dcf7a4fde86cd4b910ca0c28a92bfb1fd07ed8da0ad7fba69c939bfb668ba0ae3d13ae126d379f097daded52ee63288f6d4e85fec5fdb302eaeaaa5d8cbac784eda2d976bbd4de7c2e69fa2e065d3e26d5ccf69c0275acb470571270633c66733f9375db9e91551a3ab26986dbfa638b8e7d2cdc7d08b819f7eb3e868e6c9a1d6cbf1e68e11e48c0cdb85f0f347464d3ec60fbf5200bf720026ec6fd7a90a1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf8705f57564d3ec60fb759585bb8a809b71bfae327464d3ec60fb75b585bb9a809b71bfae367464d3ec60fb758d85bb86809b71bfae317464d3ec60fbf5280bf728026ec6fdbab1fdf659f7eb5a0b772d0137e37e5d6be8c8a6d9c1f6ebf116eef104dc8cfbf578434736cd0eb65f4fb0704f20e066dcaf27183ab26966dbaf1dbd4b98f1bb8dfb9dea931e637a7f063c1f018f8b98721407a58efab9a4faa6ee31b4da6f68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4918c586cfa45cdce75775bf48af4bd6df2a4c038eabf3bb3776bf65a50586bf247088bf422873d2e975656fd46c45c181db0dc7e2c66db93bf63aa4b7a519ff322ffe8aa03e7b80c7c1fbf9299ebd06cf5e8b16f8de693cbecb46b8d1b8ac547d1feff0a06e3bef36ea839a7e18bbfffa9a16189a7ee8d87722a8bf3d8501a724e491c7c5b36147f54cb505bb8c3a991a1743998e50cf5d0eea59007e65dd32bf0b78646a013cae62303078028b3e325592f14c21e31945c6731619cf10329e13c878ae27e3399c8ce712329e87c978cac978c693f18c20e3399d8ce756329ea3c978ae26e3b9888ca7908ca72f19cf54329e5e643cf790f19c43c633948ce702329e93c8786e24e34990f15c46c6f328194f1919cf44329e91643c1dc8786e27e339968ce75a329ed6643c49329e07c8787a90f19c47c633968ce75c329e61643ca790f1dc4cc67304194f3b329e2bc8781e23e3a920e3b9908c673219cfdd643c6792f1dc41c6534ac6733c19cf75643c9dc9782e26e36943c6f310194f37329e5a329e2a329ed3c8780692f19c4fc6731419cf55643c2dc978fa90f1dc47c6d39b8c6734194f27329eb3c978ee24e339918ce706329eb6643c9792f1ec21e379848ca72b19cf04329e6a329e7d643c25643c83c8788e21e3b9868ca715194f3f329efbc9787a92f18c21e3e948c6731719cfc9643c3791f11491f11493f15c4ec6338d8ca70b19cf24329e1a329e33c8780693f11c47c633808ce730329efe643c0f92f17427e31947c6339c8ce754329e5bc8788e24e3694fc67325194f01014f2238f05b4c09f8ff5eb0c937833e025b0bcbfae439b59457c7c5451d0e5c770bcbba3fb430a04e3ba12e499d2ffd66534a27f4958479f157041c1f92f05c49c6d39e8ce748329e5bc8784e25e3194ec6338e8ca73b19cf83643cfdc9780e23e31940c6731c19cf60329e33c8786ac8782691f17421e39946c67339194f31194f1119cf4d643c2793f1dc45c6d3918c670c194f4f329efbc978fa91f1b422e3b9868ce718329e41643c25643cfbc878aac9782690f17425e379848c670f19cfa5643c6dc9786e20e339918ce74e329eb3c9783a91f18c26e3e94dc6731f194f1f329e96643c5791f11c45c6733e19cf40329ed3c878aac8786ac978ba91f13c44c6d3868ce762329ece643cd791f11c4fc6534ac6730719cf99643c7793f14c26e3b9908ca7828ce731329e2bc878da91f11c41c6733319cf29643cc3c878ce25e3194bc6731e194f0f329e07c87892643cadc978ae25e339968ce776329e0e643c23c9782692f19491f13c4ac67319194f828ce746329e93c8782e20e3194ac6730e19cf3d643cbdc878a692f1f425e32924e3b9888ce76a329ea3c9786e25e3399d8c670419cf78329e72329e87c9782e21e3399c8ce77a329e13c8788690f19c45c6338a8c670a194f25194f0b8307ffafde0ddba3f3f2eda042f8ff44ddb9bc9d5e97949167c4ea5ec507864dd57787a3fa7e10d44d4998df01f515f60f80e703473c3b0d1ed37711e42b41b3ed864d316e73c4b8dd6094f96dc028fa6d079eed8e7876183ca6ef22c8f701cdde376c8a71ab23c6f70d4699df0a8ca2dffbc0f3be239e6d068fe9bb08f20341b32d864d316e76c4b8c56094f9cdc028fa6d019e2d8e78b61a3ca6ef22c80f02cdde336c8a719323c6f70c4699df048ca2df7bc0f39e239ecd068fe9bb08f28341b38d864d316e70c4b8d16094f90dc028fa6d049e8d8e7836193ca6ef22c80f01cdd61b36c5b8ce11e37a8351e6d701a3e8b71e78d63be2d960f098be8b203f14345b6bd814e31a478c6b0d46995f038ca2df5ae059eb88679dc163fa2e82fc30d06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4ab41b3e5864d312e73c4b8dc6094f965c028fa2d079ee58e7856183ca6ef22c8d78066ef1a36c5f88e23c6770d46997f071845bf7781e75d473ccb0c1ed37711e44781664b0d9b625ce28871a9c128f34b8051f45b0a3c4b1df1bc63f098be8b205f0b9a2d366c8a719123c6c506a3cc2f0246d16f31f02c76c4b3c4e0317d17417e3c68f6b661538c0b1d31be6d30cafc426014fdde069eb71df12c32784cdf45909f009abd65d814e39b8e18df321865fe4d6014fdde029eb71cf12c34784cdf4590bf196cc2db1b6c6fe87c2fb0bdaef33dc1f69acef700dbab3adf1d6cafe87c37b0bdacf3e5607b49e7bb82ed459d2f03db0b3adf056ccfeb7c5fb03da7f3fdc0b640e793609baff3fdc1364fe72f06db5c9dbf046c7374fe52b0cdd6f9cbc0364be72f07db4c9dbf026c3374fe4ab04dd7f9abc0f6acce5f0db66774fe1ab03dadf3d782ed299d1f00b62775fe3ab03da1f3d783ed719dbf016cf7eafc8d60bb4de76f02db7e9dbf056c9fe8fcad60fb54e76f07dbb774fe0eb07d5be7ef04db7774fe2eb07d57e78783ed7b3a3f026cdfd7f99160fb81cedf0db61feafc68b0fd48e7ef01db8f757e0cd87ea2f363c1f6539d1f07b69fe9fc44b0fd5ce72781ed173a3f196cbfd4f92960fb95cedf07b6cf747e2ad87eadf3f783ed373aff00d87eabf30f82ed773aff10d87eaff30f83ed739d7f046c5fe8fca360fb83ce4f03db973aff18d8fea8f3d2aea976f64f3a5f12c4dbce7e15d44d25e05bfca9327fd6f9d6461959b610ca9ca33b14aa671cea5ba6d20e4bbbac6cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8a41d7e116cd20ebf003669879f079bb4c3cf812da9f30bc026edf07cb0493b3c0f6cd20ecf059bb4c373c026edf06cb0493b3c0b6cd20ecf049bb4c333c026edf074b0493bfc2cd8a41d7e066cd20e3f0d3669879f029bb4c34f824ddae127c026edf0e3609376f85eb0493b7c1bd8647ff90a6cd236ef079bb4cd9f804ddae64fc1266df3b7c0266df3b7c1266df377c0266df377c1266df3f7c0266df3f7c1266df30fc0266df30fc1266df38fc0266df38fc13656e77f0236699b7f0a36699b7f0636699b7f0e36699b7f0136699b7f0936699b7f0536699b3f039bb4cdbf069bb4cdbf019bb4cdbf059bb4cdbf039bb4cdbf079bb4cd9f834ddae62fc0266df31fc0f698ce4b5bdd066cf2ac584da5df70c271785a802f614906f1b6fd3825218f7597a9928c673619cf28329e57c878ce22e31942c6730219cfe1643c6f91f18c27e35940c6b3948c670919cf9b643ca793f1ac27e35947c6733419cf07643c3bc8782e22e32924e39949c6f31219cf39643c43c9782e20e339898c2741c6338f8c673119cf22329ed7c9783a90f1ac25e35943c6732c19cf76329e6d643cadc978be22e3994ec6731e19cf0b643ce792f10c23e339858ce708329e76643c15643c1792f1cc21e3799b8c672119cfab643c6792f1ac26e35945c6534ac6733c19cffb643c5bc9783a93f1b421e379868ca7968ce739329e2a329ed3c8780692f19c4fc67314194f4b329e3e643cb791f1cc22e379998ca71319cfd9643c2bc9785690f17c49c6732219cf16329ecd643c6dc978f690f14c20e3994fc6534dc6f30619cf3e329e12329e41643cc790f1b422e3d94fc633838ce745329ee5643ccbc8784e26e3798f8c6713194f11194f3119cf5c329e1a329ed7c878ce20e3194cc6731c19cf61643ccf92f13c4fc6f32e19cf3b643ca792f16c24e3d940c67324194f7b329e5d643c3bc9780a087812c011804dfedf126cf21d9e7d60fb42e7f7804dbee1f316d83ed7f9c7c0f688c5d6c2c2270cd3c026efca7e0136b93ff328d8e49d89cfc126e70de25fcdafe870207f0b5846fcb4b4f0a3bfcf2d5c92c7ed2dcb248378b737fa4a06f66fde15188c879a672719cf2e329ef6643c4792f16c20e3d948c6732a19cf3b643cef92f13c4fc6f32c19cf61643cc791f10c26e339838ce735329e1a329eb9643cc5643c45643c9bc878de23e339998c671919cf72329e17c9786690f1ec27e36945c6730c19cf20329e12329e7d643c6f90f15493f1cc27e39940c6b3878ca72d19cf66329e2d643c2792f17c49c6b3828c672519cfd9643c9dc8785e26e39945c6731b194f1f329e96643c4791f19c4fc633908ce734329e2a329ee7c8786ac9789e21e36943c6d3998c672b19cffb643cc793f19492f1ac22e3594dc6732619cfab643c0bc978de26e39943c67321194f05194f3b329e23c8784e21e31946c6732e19cf0b643ce791f14c27e3f98a8ca73519cf36329eed643cc792f1ac21e3594bc6d3818ce775329e45643c8bc978e691f124c8784e22e3b9808c672819cf39643c2f91f1cc24e32924e3b9888c670719cf07643c4793f1ac23e3594fc6733a19cf9b643c4bc8789692f12c20e3194fc6f31619cfe1643c2790f10c21e3398b8ce715329e51643cb3c9782ac9785a5878f639e2916fc5c8ba657e5f33f7bdc3f0bd234f7c6f337c6fcb13df5b0ddf5bf3c4f766c3f7e63cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f73b86ef77f2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b61d2577997fe4dc0ff2b80f12d478cfb0c46997f0b18c586dfa3ae70c41375ed5e41e05b6921f7b2e4996702fe5f098cae62aac26094795b4ced009e4a473c51f71c2a097c2b2de45d6ce9539980ffe3f8cbae62aad26094795b4c6d039e3e8e78a2ee95f421f0adb490779fe59dbf04fc1fc75b7715537d0c4699b7c5d456e019e88827ea1ecf4002df4a0bf956987c932601ffc7f1195dc5d4408351e66d3185e3e70e72c413756f6a10816fa5857c6b57be799980ffe3f84dae626a90c128f3b698c2f1e3063be289baa73698c0b7d2429e05cb37da13f0ff21c0e82aa6061b8c326f8b291cef6688239ea87b8143087c2b2d86eabcf4b14ac0ff8702a3ab981a6230cabc2da6d601cf50473c51f7308712f8565a0cd37979872301ff1f068cae626aa8c128f3b6985a033cc31cf144dd7b1d46e05b6951a5f3abf56f02fe5f058cae626a98c128f3b6985a053c558e78a2ee195711f8565a54ebbc7c732e01ffc7f1df873962ac3218657e18308a6d05f0543be289bad75d4de05b6921dff65fae7f13f07f1c8fd5554c551b8c326f8b291c0fbac6114fd43dfa1a02df4a8b513a2f63c224e0ffa380d1554cd5188c326f8b291cbf7294239ea8670ba3087c2b2de4db5c4bf56f02fe5f0b8cae626a94c128f3b6985a023cb58e7816193c8b2c5a1c2adf4a0be9cbbd58ff26e0ffe381d1554cd51a8c326f8ba945c033de114fd4b39cf104be9516f26dedb7f56f02fe3f01185dc5d4788351e66d31b510782638e2897a0635210bbea39ea764c377d4b3816cf88ebacf9d0ddf51f76cb3e13beafe63367c47dd4bcb86efa8fb42d9f01d758f231bbea3aed7b3e13beada331bbea3aea3b2e13bea9a201bbea3ce6fb3e13bea5c2d1bbea3ce3b7c7beedbf3b87d1fca73877c6dcf0fe531f4501e4bfcb581bf36c8966f7f2cf1d706d9f29dafd706be3dcf7e7b2ed75f0541f4f5d83b8e7c2f317ccb3c3e6759e2c8f722c3b7cce33383458e7c2f347ccb3cdeff5ee8c877b1e15be61766c1773bc377bb2cfa6e6ff86e6ff1ed607b972582fad7dfc2805312f218036f3bd0c2513d4bd57a17eb757d1de37a6df76dccfda518ca2c06fd5cb71db26eb3edc845668c8b36f1f92e4d800ff92e99b2c9f3e337c026edfeeb60937e01af814d8e4daf824d9e49bd02367966f532d846e9fc7eb0c9b363ecb32fcfffb782ad4ae7b1aff8309ddf0c36e94b857d94a53fdc26b0499f46ec1b2bfd5237804dfa16639f4ce91fbe0e6cd2c71ffb02ca7b1a6bc026efda601f34795f6a15d8f6e83cf67d92efd0ac00db349d5f0eb63fe8fc32b03dacf3b781edf73aff15d87ea7f30bc1f690cebf0db6dfeafc62b03da8f32f81ed373aff22d81ed0f917c076bfcee3bb6cbfd6f99d60fb4ce7f11daaa93abf036cbfd2797c77e73e9ddf06b65feafcf3609ba2f3cf816db2ce2f00db2f747e3ed87eaef3f3c03649e7e782ed673a3f076c13757e36d87eaaf3b3c0364ee76782ed273a3f036c63757e3ad8c6e8fcb360fbb1ce3f03b61fe9fc9760bb47e71781ad85ce2f019b8c1989fd540a75fe1db0b5d279ec7f24dff79f00b6c3747e3cd8dae87c2dd8e4db70a3c026e341d7802da1f3d5602bd2f92ab0c9f9d930b0c9f82743c126e75243c076a4ce0f069b9cf70c029b8c6739106cf20dd23e603b46e72bc126dfd6af00db713abf0f6c32e6d85b6093efd6ed019b8cc5fc28d8e47bd5d3c076b2ceff016c320ecbc3603b55e77f0fb6d374fe7760936f783e04b6129dff2dd83ae8fc83603b43e77f03361923eb01b09da5f3f7834dc60efe35d8e47bcf9f81ada3ce4f05dbb93aff2bb0c95822f7814dc607fd25d83ae9fc14b0c977b82783ed429dff05d864bcbf9f834dbe313c096c32aedbcfc0d645e72782ad4ce77f0ab6ae3a3f0e6ce53aff13b075d3f9b160ebaef363c0d643e77f0cb69e3aff23b0f5d2796967d4feacf6f3bd7a3e19c4775ea6fc7d14d49f1aba361006e489f35cbb1878d0d7eed8eb5e963aaf97fdbe855eafc4d06ef0bd2b76dfe96b8a0ff5ba0af57a7719be0ba1ccb9ba7150cbc931bfa55e6e8fb11cdec79275cb3217817da7b1ee76babe1f3aaaef2e8349b851072973816652c7c61fe87c1b582646b6d4f5b1c45a001ae29484bc30b8d1aaac14cf7b1bc3f321f0ec8e9d277dbdee222670df8afb7addbc8f6bc65a3194d905faed74a01feeebb26e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f99915cf5e9dc7e7ca526e2f09a3d876038f8bfbfcf81c56d6af9eebec3cbdceefeed8fdd67fbed74aafb7d4a8732194f91a9e39edd1f922f8bf6cb7a86de9e0396183db52fc15417df059d05e473cbb0d9edd162d245f129befb2116e342e2b557d59d433f63d86ae7b2d9abada5f77eb7515189ae2fefa91c183cf468b80f763fd9b80f57c0c7570b08f371817e20ff7a5dd6093fc47c0e8623be3b144da03791e8ecfa6a5ccaf8ce7e2f16ffbb25297edc60750a76470607c174299df41dbf7b9ce63df90bda0db3f2cff97a9a1e7d4a29faaf3f6f8eb9cdabedb8033097ed0f7fbc01a93ef7aefd014e8247ec45e08f9bf437f0e29277a88d6c28ee39523bbb9dc47c672c5506687a5fec920defa6f3778b61bcc6a9b7c0971f60f38febb6a9376446874116824657683467b1cf1ec36788443fca932b2fd5b1b6564d94228f3bfa08d527591765eea897d5bf018e0ea3826be64dd326f3b37fe1018cd3aaaf818705c1defeed87973abffd76125e95f6cd7e3eaff25eb6ea797158ec0587f29ac5fb85a07d1c796ffd9be2575eb77d9bf6c8f516761419da54cbb92f4af8ab3cb753e9373fd4375dd1675aebfc3014f22a87fedada6868eef788cf9c0018fa37a96da8e5d3b8d3a1543998e504f07e7310dbe0bbc1d7cbbd8e6a8859c43ed32b42884321d4ad2bfd27644e988d7aa1f66a52e65d6f3c1524b5da44cc792babab4017b9c4c2eb7dbfb5027b5dedd96ba4a990b4aea74e9acf309d84e78dfa48fe5ff3235d41ee0583c5be2af736afb6e06ce24f841dfef016b4cbeeb7d0b44cef7c58fd80b215f59525756ca891ea2b5b0ab7d44def9437673b95dc672c55066aba5fec920defa6f3178b618cc6a9b7429a9cb4b1cb96c37b74668540a1a4919bc7f2cc7767cefce76dcdfed883beab8bf1b18cd7613cf5d5cb2ed31d8cc7ba8b6f3412983e76452e69a92f4af6a671396b2e6bd6117f731f11dd400ea111875950963c0c1b561395e3b493b257e3a837db7ce8bce9d0ded0aa1ccc092f4afc3f36eebbd4bf3fa0eaf2984dbdcb7f0dd8fc12575dc3876e26efd5b04b64ff4afa3ebb472db3d43e1b0dd331c5652c78ecb0ad77e4b5dcc6be416c181f7d4bf36cae27db7869633f3e638944adf4f8c72363f78cd13dbbb1a5d4a4b91a94560bf5ff091c15e101c38e6a6ec071873e67d94cec67af03e4a6d49fa57da24b3acdaf6ff7e4c9d3eb21d453b6c4f30263f02c6a4ce977eb3a98badfe322ffe14e3c7461ddcb45de9f79532b90fbc07785cb4ed8edae8523cc6c6f77d8a5e55b6e3ff478656597c5e6b3de69bcfdcdb18f9787c9755dbee3fd9b4d865e171f51c254a8b5d16dff169d17d84edf861d362a785676796b5d869f11da3163578dfb3212d3eb0f0b8b817d590161f587cc7a7458fd2869e6ba0163b2c3caeee3d446921fe3265de49c0dcc6c8c7e3bbbcca769fcca6c5760b8fabebe6282db65b7cc7a74597ee788fae212db65978e2bf3fd7b016db2cbee3d3a2672fbc87d79016ef5b785c3dd38dd2e27d8bef18e362a4ed5e8e4d8bad169ead59d662abc5778ce787dd6df7da6c5a6cb1f038b8efdaa0165b2cbe63d46238de776d488bcd169ecd59d662b3c5777c5a5475b3dd13b669f19e85c7d53de1282ddeb3f88e4f8be13d95ef4d8dd0629385675396b5d864f11de335542a2e3636428b8d169e8d59d662a3c5777c5a54a7ceb53634428b0d169e0d59d66283c5777c5a94a68ea9eb1ba1c57a0bcffa2c6bb1dee23bc6b8485d4fae6b8416eb2c3cebb2acc53a8bef188f23a9b858db082dd65a78d666598bb516dff1695193baffb4a6115aacb1f0acc9b2166b2cbe63bce7928a8bd58dd062b585677596b5586df11d9f165d53c7d4558dd0629585675596b55865f11d9f162353cfc45636428b95169e9559d662a5c5778ce79da9f6624523b45861e15991652d56587cc778de99ba7fb1bc115a2cb7f02ccfb216cb2dbe636c3b53e79dcb1aa1c5320bcfb22c6bb1cce23bc6f3ce9416ef36428b772d3cef66598b772dbe633cef4c1d47de698416ef58785c8d8112a5c53b16df31c645aaed5cda082d965a789666598ba516df31ded74ab59d4b1aa1c5120b8fabf11aa2b45862f11de3f548ea1edfe24668b1d8c2b338cb5a2cb6f88ef15951ea1c7c5123b45864e15994652d1681ef3db1fb4ef7e7161fd217eb42438b4228735a87f4aff4c58ad251d681fdcab02e6fc75e9774bfb2851175791bea2265ce82bab4099c8c5154eea8aea998790beaa4d6fbb1a5ae52e6bc0e75ba74d2f9046c93fda05b6fcbff652a30e6939017fd549ddf88bfcea9587d1d3893e0077dbf06ac31f9ee82be0b74123f622f847caf0e7565a59ce8215a0bbbda47ded4796437975b642c570c65deb4d43f19c45bff370c9e370ce6d47b0f106712476edaae34d39b111a5d081a4919ecb3f7b1231eb30fa170883f5546b67f6ba30cf6a1943217431b85fd4aa59e89e0c07e938edab22ec82eeb9679f1570cb63dc068d651c5c767d0f753c68a907124944dc685e80aebe961d8545d7b3aaaabf89275cb7c4f6094712a7a649fb1acb18cdd0d46c5d3db816638f6864c0d1d2f7a034f2f073c8eea993a0e551875ea69d4a918cae0bb8d150eea59007e65dd325f01be5d6c73d4428ec9e7195a14429961c6f963948eb20e15bf3d2c75e9ebb82eb26e6997fa66c177a5e1bb9be13b11d4dfce41d0f0fe5509cc7d1c30abf5f68b7fbda578de2631257eba419dfa830671d509d725e779fd0d6d0b213f05cef3a49c9495e397b0ab58966d89ece672bd8de58aa14c5f4bfd9341bcf5ef67f0f43398d536b907ceed1cec0fa918e86b70c87c37d0ae5f84767d413b2983c7bfee8eb4eb63f0c87c77e091739c0ab0c9b982f027e0ff5db3c06db67b15166eb1e13871dd2d8cdde2674c9deb74371865be1b308aad0ff0543ad2ccdcd6e719fae071b9b55146962d843233e1d898b09455fb5dc782ba7ab5d4f6d8de1dd36d7a6b077ae1388d01e813181a06a097d4b395039eb641dd588d9326d74e1c7ef7c89b46a61f3d0a5aa18189bf05966ab4001be65b5a6c41507f48ca42b0c99094adc0d6c2900587c294f232a49d0bb9500f5977a1c1d90658e2f48dc379cad450e81c063c2e4259858e0ce9a943e7b689a3278fc4f8686570362576d4ff5a36502e6a5daeb683b94f2461de8cc14247fe5b427d93302ffed4b629d6f9f1c347dcdb7fe2dd53c68e1c3779120a65eed8982f08ea6f00f3374a70573b1d060056181b875646bdb0c190ffc986691b3f67398e996b6a13803f99da826e873bd04dad5fc6be1d317ccc981ba6548d193de2f229e3464c1e5d3b0eb7661b43b9a82d2dff6f0d365b138f65d584cd162e7b98c5669b7094e136609323d7e160139eb6606b0979296f6e1927e1da11d62fbb94fa9f12a795aef861415d08c8e158b5ab6aff559f8f55a7416aa86335b4b1da9c6ae86275c7500d4dacbe62a7861e56430daba1854f0ad24307aba1824f0dd24301abaf5d9404e9a17dcf08d243f79e15a487e63d07f8be0dcce706e9d32e35b46ea7203d74aeba75a95e5d579f7953efd6abd377755b409df2aa4b3c75faa94e3bd5e585ba7da16e65a9533a75baac4e05d5e99bba1ce9a7b5ee1fa68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc3744d98ae0dd380305d17a6ebc37443986e0cd34d61ba394cb704e9e19d6f0dd2c3afabe19f6f0fd24343df11a4878dbe33480f297d57901e6e7a78901e8a7a44901ea67a64901ec2faee203dbcf5e8203d4ceebd417aa8ddb1417ab85e351cb61a265b0d9fad86f9554302ab2185d550c36a58623584b11a02590d8dfc60901e72590dd9fc48901ef6795a981e0bd3e3617a224c4f86e9a9303d1da4870757c3864f0fd2c38cabe1c76705e9e1cae704e9e1cdd5b0e76a3874354cba1a3e5d0dabae867957c3bfab61e15f0ed32b617a35483f92508f62d4230a75fb5f3d0653b7a8df0ed2b7ce1707e947dcea91bfea02a1ba84a82e32cb8374172ad5a54c75b1535d0e55174cd5255575d1555d9655176ed5a55d75f157af3ca85740d42b31ea1521f5ca947a854cbd52a75e3154af89aad72ed56bc4eab5eadd41fab6f8de20fda854dd0e578f06d42d7375fbfed3307d2b48c7e477c2f4dd307d2f4cdf0fd30fc2f4c3203dacb11aee580d97ac865656c330ab219bd550ce6a2868356cf467417ae8693574f56f83f490d8bf0fd3e761fa22480faffd6598fe18a6afc2f4a730fd394c7f09d35fc3f4b730fd4b98fe354cff16a6bf87e91f61fa675037cc36362427e9d6475fc104c3274f1e3976fce492c9b52563a78c993c7afc98074aa68e9e3caaa4f6be91136bc6d44ec585bfad179631c2fb4f9c38fc8192d1e3aa47de5f523b6572496d4d4955ed9471d5f50ee27fd10b9d72a0c7e1d5d5d1cefef39b90fedf263a3d5cb78b32fafa550dd7ada865130439aa290b756fd9b40a4dd44730b9d4bd397d1e5c32694cede492d29271e1dff0c05b3b756475e712fcdfa450e449934b264d1e3e717249cdc4dab1255d3ae37a1f6ddb844afc575b3730679fd434713aeaef2c3529c47e797a1314f88fd39b46dabae41b90b62d699ad3929226d4f09ca62c747513096f29899465d294aac913878f981cbdf0eddf64e1bb9a52cd714dace6a91d9ae0eccca62cd4bf43d308ef6a8ab31919380bfe1b91390b848c5506009b2d6c6f00000028421f8b08000000000000ffed9d77741cc791c6679118164b1024c11ca04433828b4506139833254ab272204882222d92a04828599625599273ced9723acb39e7b32eda77e73bdff91ce49ca3e474ffdcf3bdbbf7fcae7bb6cbf8d09c5963a129b0065bf35e717b0abd53bffea6ba67b67b7699098adb1f8c655cb9dad845c1b91bfdbdcfbde69fdad69ae0b1f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82915bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413ac6a8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d9a7b5de65e97bbd715ee95deb3cabdae766dac71fb2dc6d6583663addedf0ac6da8cb51bebf0fed669accb58b7b11ef7b766f7b75e636b8dad33b6ded806631b9d0e9b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1cb8c1d3076b9b12b8c5d69ece9c6ae3276b5b16b8c5debb15c67ec7a633718bbd1d84dc66e3676d058bfb143c60e1b3b626cc0d85163b7183b66ecb8b16718bbd5d80963278d9d323668ecb4b1db8c9d3176d6d890b1db8ddd61ec4e637719bbdbd3ec99c6ee31f62c63f77a9ccf36769fb1fb8d3d60ec39c61e34f690b1878d3dd7d8f38c3ddfd80b8cbdd0d88b8cbdd8d84b8cbdd4d8cb8cbddcd82b8cbdd2d8ab8cbddad86b8cbdd6d8eb8cbdded81b8cbdd1d89b8cbdd9d85b1c0b7584b71a7b9bb1478cbdddd83b8cbdd3d8bb8cbddbd85f197b8fb1478dbdd7d8fb8cbddfd8078c7dd0d8878c7dd8d8478c7dd4d8c78c7ddcd8278c7dd2d8a78c7ddad8678c7dd6d8e78c7dded85f1bfb82b1c78cfd8db1bf35f677c6feded83f18fb47635f34f62563ff64ec9f8dfd8bb12f1bfb5763ff66ec2b9ee6ff6eec3f8c7dd5d87f3adfd7dcebd75d5d9a17fb86b16fbaf2e3eef55beef5dbeef53bde7bbe6bec7b9eeffbc67ee0f97e68ec47aefc63f7fa13f7fa53f7fa33f7fa73f7fa0bf7fa4bf7fa2bf7fa6bf7fa847b7dd2bdfec6bdfed6bdfecebdfedebdda35d5cb9a8ae5c9c1f0d617243446b51fcddb3515127f693072b35a54bbbfd16bb3f3d7b87d7a25ed6add7eade7af73fb75de7126bbfdc99ebfd1ed377afe996e7fa6e76f72fb4d9e7f8edb9fe3f92f76fb17833f1bc09cabf35b5fb57365c047f95a05be5ae7ab065f1d1d0e7c939caf167c747eebc037c5f926816faaf34d065fd6f9a69096c6ea9daf2f482a57f2fdf6b8b9a48febd6a1a625cf7bd81eb78189777af2bc03f6b88d0cbc363f66b8634d87bc99e97c8de09be57c33c0e786a03ff739eb9bed7cb3c037c7f99ac037d7f966836f9ef3cd01df7ce79b0bbe05ce370f7c0b9d6f3ef81639df02f02d76be85e05be27c8bc0d7ec7c8bc17781f32d01df85ced70c3e7ac6e502f05dec7c1782ef12e7bb087c34d65e0c3eba37bcc4f9ec38313903ef717e1aa3c2f7d0f80cbe653436836f398dcbe05b416332f856426cf2ad8271857cab9d8fc628fbb75e57ee0b92ea1385b04fac4dfab8e6c8f6b8eb933f6eb86eb72118d6ba0fe2ac05ad36ba7282cf06b562ec8c338a43fe1a28ef82ba548ff4a0eb0cb1dbebc93a57de58e27dbddefb7250675d44fbfb8264dbbfdee359ef31d742fb7972b6ada0393beaadec9cbd1aeafab947f73c133167f7020743ce766ace8e7a2b3b6707a0ae9f7b74df3b1173f63ae060c8d97e9e9c2de435678b736441109d7bf4d96722e6ec31e0483e673b346747bf959db30f405d3ff7e8f3ef44ccd93b8023f99cedead77b83516f65e7eccba0ae9f7b3417331173f621e060c8d9011d6747bd959db36f81ba7eeed1bce044ccd9570247f239dbc394b36d9ab34171bd3308a2738fe6a82762ce3e021cc9e7ec619d9f1dfd5676ce7e16eafab947eb251331673fe4ca769de16b6e9d6121f8beee7c8b8037f9dc3ed2ce94db05cdede2732041109da3b476371173fb3157b679fc383c7b40be6f39df05e0fbb6f35d08beef38df45d02e863ed0af7d60d45bd97de07b50d7cf655a479e887de0abc0c190b387356747bd959db34f405d3ff7e899868998b33f040e869c1dd09c1df55676cefe11eafab9b7cc952762ced273a5f67ee1c7ee7e6105f87ee27c2bc1f753e75b05be9f39df6af0fddcf95ac0f70be75b03be5f3a5f1e7cbf72be56f0fddaf90ae07bc2f9dac0f7a4f3b583ef37ced701bedf3a5f27f87ee77c5de0fbbdf37583ef0fced7e37c76bd8b9ebdfab2f3d9734b1af505c99e5b7ac6928e4dfbabc621768317bb611c63377ab11b2362af66889d8518b465bcfd3e28afe6e5c9e78291dfffa0586b928fd566dbde128cbeed6b8027cfd0f62cc4180d4f1e785a93e7099ff52d247fdcf01cb7789a6621560bb4ab8da15d198845c7a67d8a97031f8edf6d118cedc9331632108b8e4dfbedc0483ebc9ed0759dfa8fbd1e2ecd0cf332f4a5f09e88e2d16f7f11c71af0539ddfcf1a665be1d8eae1ef786d6df57c4c7919e605c5a263d33ec5ab87f6b48e3f6361b48c798f916b8cc8402c3ab61f1bfbfbeaf1d76c54e73507bef3302615c63a26d503db78dca7c49d6b29b139ae57198841631b695e003fd599edbe9060c7b61d30ee32f4bf42b9f76f381e249fc7853cf6ebd1f0b4010f47df67eaaf79bceeff294836d73a3cad5a3dad7250a71df4eb60d0afd47d08c55366655666655666655666655666655666655666655666655666655666655666f9ccf8fc05ae6f52bd554218c957001e8e79fef0f7a3dcb1e8f8765de7dbb0ae93fcba45218f6b96f48ce172afcd3550e7c9cc70ddefc37ababf36886b9aab78b51bd57316f5c1b96bb19c6b8871ebc051eb97cd89c52e1ce65a6fb3bfa1627f87acc5d3755584a60ccfa98cd034e3698acf29aef4786c9eceab1e66e358fb2b772d12b5a272926b7bf88c01ef79298e1f940b55c1c8f103af339d89c71eb98649ebe59d5eec1aa8f33f99e17343cfa2d2ff73e83ff364eb7479c7a6f72c077f9777ec06f75ee2a8f58edf02efa53aff0763ea5bab823f6bc6f1fc078ecb01b415b73e28e3ba79f2d7e1e23a7e5b193c1dc0c331ce30dd6fe4b10f24bd8edfe56915751f43753a41bf2e06fda2ee45699fe229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c66fcae28b166a15e4108e3383dfb10ae67d0efbfd0f1edbace8bab86e372afc3d19ad30aafcd3550e72b55c3755feecaf5c1b9cf3bc49d4b86f5bc92e792e2d5437b702d88ebfbdced1e4f7b8416546e4e2c76711d3f798d87d7f1db3c5d0b119a72f5575c63454db1bfb67a3cb8365a1f9cfb6c49168e331ecf0ec5e505c5c3bed40e3e2ae3f7a339ce335e4bfce77a281eae5f3feab46d08b8ce7d21cf396e74439bfa8273f3bb06ea7c10c6be0fbb323ec381cf8e3c16f177da4aad53937e2cbf65972faefbae05ce3e8883b1d7016b42b15b3176c619c5217f0d94bf50355c97ea911ea435b1db3e42bf0986ecfefb5abdf7e5a04e4f44fbfb8264dbdfebf1f47accf69c7c0cf2ec31b8fe738d493d311a2d078da80ede07713d93e78f91fef38df8dc5e9d5707ef59a8ce97608c8a7b7e34ea9943aeeb58dc338751f7c61dc0e8b7d17fceb3d29fd37a1cc68ba49fd37a1c72089fd30abce3af80e313575d107f6da13adff58eefdf93d37bf03930aaf303182f1adc338bf5c1b9f7dff8ccd4787cbe8a7b4e9ae2e17d0df6edbfd476cbdc0df5fb1264c69c4016bc4fa03abff2ce59570cf79a88f73e19f35ed26ab52be3e7175f3fab430fbca72f111d8a7dbed76b0be5750fb485eafc97770f98fc7d4bf11e30f9b68ebc27a171a03da2ad54e7bfa1affd11eef1e83ce1e78ebaea73ff4e5ba97b40d2cfb679bc7f1f18634bf87de0daeae1bafeeffc92d6e5fe3e70a7f73e89bf0ffcbf906775f01c3ad758bd2e46a315a011d5c1ef06d175047fcb37ea1ac3f56c7fdc3526ea3728717c6ea81e7f367f5e2dea1e81ead07bf11e6196636e703afb75fdf942ba5e26f9dc307e57a205e2e277255a98f4cc836e7db08ff705e733769e2976dc6f4ee7c72176dc6f4e8f47ec462f76e338c656cd5573499a33fc2672f8fd33fccd52bb95ba2f25861cbcaf2a058cd52960ac4901636d0a18eb52c03829058c9353c03825058c5353c09805c6f3796d67d0a730567db8ce57a97b0d8cbd9a498b72feff0ee6ff4ba5e4bd0fc666f84c176ab13a18bd16f8398fe3b71fcafdbf5e8801ffef821929609c9902c65929606c4a01e3ec1430ce4901e3dc1430ce4b01e3fc14302e4801e3c214302e4a01e3e214302e490163730a182f4801e3852960bc28058c17a780f19214302e55c6441857f23216c6ca687938fecfbfa7f27f8e31f0e4a39e3965faee49d9ffdf1af3ef93b68ef577e3f0d912deff13eea9fdb61dc7b323e5feb65da9ff6f9589b1305646aee7d8f17b3ca3e1c1ef45467db78681b1305646aeefbfe077f446c3d3099a754468c6c058182b23d7b372e53ecb89cff4774668c6c058182b233e579d204fa85957193cdda0595784660c8c85b132723d979c8518a3e1e901cdba233463602c8c9591e9bb6da1663d65f0e077c07a223463602c8c95d1f2ac65d2acb70c9eb5a0596f846692189127e9dfc9ee8d88c5f19dc172db4e0cc83825058c5353c088cf49708c5fa59e93e8e5d5a730567db8ce57a9e7243036c3f763422df0fb107f498bf5bc3c259f93c0d81b98b4c0efabfc252d36000fc7f767b21063343cc49083f7cd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1b32ac3bd62c9cf2f1b2678ecb8cf2a133d76dce792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d73fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e233886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430edeb736058c1b53c0a83aaa8ed6ec967f6a9bea2888310d3a2aa3322aa3329e0fc6348ce1ca988a7c2c8c95d1f26c4b9e27d46c6b193cdb40337a5f2b2f6361ac8c96677bf23ca166dbcae0d90e9a6d8bd08c81b1305646cbb323799e50b3ed65f0ec00cdb64768c6c058182ba3e5d9993c4fa8d98e32787682663b223463602c8c95d1f2ec4a9e27d46c67193cbb40b39d119a313016c6ca68797627cf136ab6ab0c9edda0d9ae08cd18180b6365b43c7b92e70935db5d06cf1ed06c7784660c8c85b1325a9ebdc9f3849aed2983672f68b627423306c6c258192dcfbee47942cdf696c1b30f34db1ba19954c6b52960dc980246661d0b6365b43cfb9978f695c1b31f782e65e2d95f06cfa5c07359f23c614e5d5a060f31e4e07d6b53c0b831058caaa3ea28895175ac1c1d95511995b13cc6be1430eab95646a98c0c9faf4a7e87e6d2091ebbc18bdd5021b1e3be4333d1636b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae792621f483e76a1dcdf9839003c1cbf79c3d4cebc3deee5ee587f4a503fabd5159e56977a5ae5a0cee5a0df150cfa65202e1d9bf6295eb9cc4f13c0cc14bb30cd1c630ab49f626cf4f4b0f1af646a7bdc587fe5048f1d37d64ff4d87163fd448fad79ae795e09b135cf35cf2b21b6e6b9e6b994d858ae0d86efdbe9f74fed319eeeca356e1f59c94f752e9b547c6d08b40f71c4d63ea4d78a4a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9ecbcb73cc87aa71e0093c9ea004cf62613c7385f1cc10c6334518cf72613cd5c2783608e3198fe7f9cae1d92d8c6787309e6e613c4b84f1ac10c6334f184f4118cf4c613c1dc278a60ae3d92a8ca74618cf26613c79613c7b85f12c15c6335f18cf2c613c2b85f16485f1d40ae3d92c8c678d309e65c278f609e3d9238ca75718cf4e613c3dc2783a85f12c10c6d3268ca749184f8b309e7a613c39613cdb84f1d409e3592d8c67bf309e75c278160ae3992d8c679a309e06613c9384f1ac17c6b34b18cf76613c5dc2781609e36917c6334718cf2a613cd385f1340ae3d9228c67b2309e8c009e6c70ee6f9265e1ef07c057e5bdd7de0fb4360dfffd2ae7af82f75cedcad511c7be0a7cf4ddf0ab23de8b3a5d056de973e5fc53db429d30561fec53bc7ae0b85a08cf64613c5b84f1340ae3992e8c6795309e39c278da85f12c12c6d3258c67bb309e5dc278d60be399248ca74118cf34613cb385f12c14c6b34e18cf7e613cab85f1d409e3d9268c27278ca75e184f8b309e26613c6dc2781608e3e914c6d3238c67a7309e5e613c7b84f1ec13c6b34c18cf1a613c9b85f1d40ae3c90ae359298c6796309ef9c278960ae3d92b8c272f8c6793309e1a613c5b85f14c15c6d3218c67a6309e82309e79c2785608e359228ca75b18cf0e613cbb85f11c10c6b341184fb5309ee5c278a608e399218c67ae309ec5c278aa227818feffcb90879e5fa363d3fe0121b119ce43f8ff7e5ec3d4a66bddb16add71899fe2d5409debdc4061d7eff1bdc4e53f6f88d7a66b41a36b99da42e723e39d1fe6d8057cae320086c0d32788e0e1781e95a99d23f230c1ff7f366fb5baced3ca3f7739a8730de8771d837e51b9fde73ee05ed3c86c79e8de8c58b3506f831046f25dc9cb13f6db0dc1c8ad54bfbd0e7838c630a67686fdeb7aaf4d1b2274a73a98abd733b433aaefd0fef5701ed2c66c7936b932b166a1de26218ce4bb969727ec5f9b82915ba9fe753df0708c3f4ced0cfbd70d5e9b3645e84e7530576f60686754dfa1fd1be03ca48dd9f26c766562cd42bdcd4218c9771d2f4f7b16da4c5ba9fe7503f0708c3f4ced0cfbd78d5e9b3647e84e7530576f64686754dfa1fd1be13c28b33247315b1efa0e17b166a1de16218ce4bb9e95a73d9f8536d3566a1cbb117838c67926ddc371ec26af4d5b2274a73a98ab3731b433aaefd0fe4d11b19b8364b5b879145adc1cc173f3386b41f1ca65be2685ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce76539d5567d559754e825975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5982ce96877e338b58b3506fab1046f2ddc0cb137e2f686b3072cb78fb7d50be19786e64d087a99de133e407bd366d8dd09dea60ff3ac8d0cea8be43fb07e13c1c2c83f9a61432abce6363b63cf4dbf4c49a857adb843092ef465e9e701cdb168cdc4a8d63078187639c676a67388ef57b6dda16a13bd5c1fed5cfd0cea8be43fb144f9995398ed9f2d0ff1145ac59a8b75d0823f96e66e52984df6fdc1e8cdc4a8d63fdc07330719ee238c6a07b388e1df2dab43d4277aa83b97a88a19d517d87f60fc1792887f9a61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efabf8288350bf576086124df41569eb670dd61473072cb78fb7d503e043cfd89f314d71d18740fd71d0e7b6dda11a13bd5c1fe7598a19d517d87f60fc37998e8cc37a5905973637c98353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e486e5d9e9cac49a857a3b853092af9f9727fcdd839dc1c8add4733b8781e710833e4ced0c9fdb39e2b5696784ee5407fbd711867646f51dda3f02e7419995398ad9f2ec726562cd42bd5d4218c9778897271cc7760523b752e3d811e0e118e799da198e63035e9b7645e84e7530570718da19d577687f00ce83322b7314b3e5d9edcac49a857abb853092ef302f4f388eed0e466ea5c6b101e0e118e799da198e6347bd36ed8ed09dea60ae1e65686754dfa1fda3701e945999a3982dcf1e5726d62cd4db2384917c4778790a5968336da5c6b1a3c0c331ce33b5331cc76ef1dab4274277aa83b97a0b433ba3fa0eeddf02e7216dcc9667af2b136b16eaed15c248be015e9eb07fed0d466ea5fad72dc0c331fe30b533ec5fc7bc36ed8dd09dea60ae1e63686754dfa1fd63701ed2c66c79f6b932b166a1de3e218ce43bcacb13f6af7dc1c8ad54ff3a063c1ce30f533bc3fe75dc6bd3be08dda90ee6ea71867646f51dda3f0ee7216dcc9667bf2b136b16eaed17c2483ebc5eec67e2c9793cb9082d2662ec062f764385c46ef4623756486ccd73cdf34a88ad79ae795e09b135cf35cf2b2176a5e69a6a5e999a67cea3e699f3a879463517a9f99f928bdd81e34a15c43ac6d44edcfaa08cf373b42d16c6335718cf0c613c5384f12c17c6532d8ca75b18cf12613c2b84f1cc13c65310c63353184f87309ea9c2786a84f1e485f12c15c6335f18cf2c613c2b85f16485f1d40ae359238c6799309e5e613c3dc2783a85f12c10c6d3268ca749184f8b309e7a613c39613c75c278560be359278c67a1309ed9c278a609e36910c6734018cf24613ceb85f17409e359248ca75d18cf1c613cab84f14c17c6d3288c67b2309e8c009e6c70eef751f0fb04d5e0a3e7fbf783ef19ae7c007c551131e838c7c147f3b9740c7bbd5ad7742e4315bce7d608ae6744c4a338b746bc773c74c7587db04ff1ea81e356213c9385f1340ae3992e8c6795309e39c278da85f12c12c6d3258c67bd309e49c2780e08e36910c6334d18cf6c613c0b85f1ac13c6b35a184f9d309e9c309e7a613c2dc2789a84f1b409e359208ca753184f8f309e5e613ccb84f1ac11c6532b8c272b8c67a5309e59c278e60be3592a8c272f8ca74618cf54613c1dc278660ae32908e399278c6785309e25c278ba85f1540be3592e8c678a309e19c278e60ae3592c8ca72a82e700134fdcef291c1010dbeee74117bb65e1efe3f13da5031e23ed1f0346e4259e3c134fdc6f50e405c4b6eda7cfeab4669185bfe3f74cb8722aef31d27e544ee173966b9878e27eb7638d80d8560b5a1ba06700b2f0777cae9a2ba7d6788cb41f95538dbc3ce1ff2db13a18b9957ad608fb1cc739646a671efb5f82bfa111f95bd4ab3dadf03754c7e3b9e2b8f180e229b332c7315b1e5afb2256bc9e8dc7f79646c318757d65e009c7c79660e4566a7c3c063c1cd70fa67686e3d809af4d2d11ba531dccd5130ced8cea3bb47f2222767390ac162747a1c5c9089e93e3ac05c52b97f9400a9925e86c7956b932b166a1de2a218ce4cbf3f284e3e3aa60e4566a7c3c093c1cd70fa6768663c229af4dab2274a73ad8bf4e31b433aaefd0fe29380fe5309f4821b3ea3c3666cb436b34c49a857a05218ce43bc6ca53c867a1cdb4951ac74e010fc738cfa47b388e0d7a6d2a44e84e75b07f0d32b433aaefd0fe209c076556666556666556666556666556666556666556666556666556666556666596cd6c79e8bbc3c49a857a6d4218c9779295a7b8eed0168cdc4aad3b0c020fc7ba0c93eee1bac369af4d6d11ba531dccd5d30ced8cea3bb47f1ace83322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b63cf41bf2c49a857aed4218c9778a9727fcde567b30722bb5ee701a7838d66598da19ae3bdce6b5a93d4277aa83b97a1b433ba3fa0eeddf06e7419995398ad9f2d06f0f126b16ea75086124df202b4f71fdb42318b9951ac76e031e8e719e49f7701c3be3b5a9234277aa83b97a86a19d517d87f6cfc0792887f9440a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d2d0ffd9f86c49a857a9d4218c9779a95a72d5c77e80c466ea5d61dce000fc7ba0c93eee1bac359af4d9d11ba531dec5f6719da19d57768ff2c9c8789ce7c2285cc9a1be3c3acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc72c21372c4f972b136b16ea75096124df6dbc3ce1ef1e740523b752cfed9c059e330cfa30b5337c6e67c86b535784ee5407fbd710433ba3fa0eed0fc1795066658e62b63cddae4cac59a8d72d84917c6778790a5968336da5c6b121e0e118e799da198e63b77b6dea8ed09dea60aedeced0cea8be43fbb7c379481bb3e5e9716562cd42bd1e218ce4c3eb720f134fcee3c9456871be62dbfd5e57ae77af59f87b2f30728d873d1e23ed638e232ff1f432f134783c0d115a9cafd8b6fdeb5c799a7bcdc2dfd70123574ef57a8cb41f95530dc0b38e89a7d1e3698cd0e27cc5b65aac77e5e9ee350b7f5f0f8c5c39b5ce63a4fda89c6a049ef54c3c7163d2fa71881dd7bfc623765cae8c476cd55c3557cd55734ecd33e751f3cc79d43ca39a8bd29ce13e2a9cefa5180130e0d60765fcacc071efc9d4ce7cd4e7b1f55e9bf0f318ce399cafcf1bcaaccc71cc4cf316ed592f36e913783cb40d316b319ef3a6bd5e9bd2306f5a8af9440a9955e7b131dbd877241fbb3debc5267d028f87b63b98b5606a67381edc19446b4cf1725007f3f44e867666202e1d9bf6ef84f3500ef3891432abce6363b6b1ef4a3c76f1f7e43136e913783cb4ddc5ac054f3b8be3c1dd41b4c6142f0775304fef66686706e2d2b169ff6e380fcaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccca2c9bd9c67e66e2b18bf3f7189bf4093c1eda9ec9ac054f3b8bf3f7f704d11a53bc1cd4c1737e0f433b3310978e4dfbf7c0795066655666655666655666655666655666655666655666655666655666655666d9cc36f6b3928f1d7e1f0763933e81c743dbb398b5606a67387f7f6f10ad31c5cb411d3ce7f732b4330371e9d8b47f2f9c076556e628661bfbd989c72eaee7616cd227f078687b36b3163ced2c8e07f705d11a53bc1cd4c1737e1f433b3310978e4dfbf7c1792887f9440a995567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975ae1c9d6decfb138fdd16cedf636cd227f07868bb9f590b9e7616e7ef1f08a235a67839a88379fa00433b3310978e4dfb14af12984fa4905973637c98353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e39825e4868dfd9ce46387df67c7d8a44fe0f1d0f61c662d98da193efff26010ad31c5cb411dccd30719da9981b8746cda7f10ce83322b7314b38dfd50f2b10b592f36e913783cb43dc4ac05533bc3f1e0e1205a638a97833a78ce1f66686706e2d2b169ff61380f6963c6f33739b9d8e1739b14a3cabd5adf735db91a7ccf73e51af03ddf956bc1f70257ae03df0b5d7912f85e04ed21df8b5d7925f85ee2caebc1f752575e07be97b9722ff85eeeca3de07b852b0f81ef95ae7c3bf85ee5ca7780efd5ae7c27f85ee3ca7781efb5ae7c37f85ee7cacf04dfeb5df91ef0bdc1959f05be37baf2bde07b932b3f1b7c6f76e5fbc0f71657be1f7c6f75e507c0f736575e0abe47227c6f77e5e780ef1daefc20f8dee9ca07c0f72e579e02be77bbf254f0fd1594e9f53dae5c0fbe475d3907bef7baf234f0bdcf951bc0f77e579e0ebe0fb87223f83ee8ca33c0f721579e09be0fbbf22cf07dc4959bc0f751579e0dbe8fb9f21cf07ddc95e782ef13ae3c0f7c9f74e5f9e0fb942b2f00dfa75d7921f83ee3ca8bc0f759575e0cbecfb9f212f07dde95f1fcfeb52b3f043e1a571e061f8d2bcf051f8d2bcf031f8d2bcf071f8d2b2f001f8d2b2f041f8d2b2f021fe5dd8bc14779f712f051debd147c94772f031fe5ddcbc14779f70af051debd127c9477af021fe5ddabc14779f71af051debd167c9477af031fe5ddebc14779f706f051debd117c94776f021fe5dd9bc14779f716f051debd157c94776f031fe5dd23e0a3bc7b3bf828efde01be66577e27f82e70e57781ef42577e37f82e72651c672e76e5f780ef12577e147c3416be177c4f73e5f7816f992bbf1f7ccb5df903e05be1ca1f04df4a57fe10f856b9f287c1b7da953f02be1657fe28f8d6b8f2c7c09777e58f83afd5953f01be822b7f127c6daefc29f0b5bbf2a7c1d7e1ca9f015fa72b7f167c5daefc39f075bbf2e7c147d7711a676c7fb6fd9274208dac8fdadc12d116f24d86b6f405c9ded3512c3a36edb701239d83c2f8331646cbd8ea315a9e0e06cd30af682bf599a90378da197898da197e66eaf4dad4e6b52907759e06edec64686706e2d2b169bf1362739c73d4a2d61d7799a7450dd67117347b3d2da5231dc3e66f21a22d3dcc6da163d3b8d4330eb1bbbcd8792f368ec7b495ea5f5dc0dccdc06c8fdb9bfc71c3feb5d61d8b728ae2e4a14deb4083a4da84b133ce280ef96ba03cbf69b82ed5233de8fa45ec3697e95c22bbffbe0eef7d39a8d313d1febe20d9f6f77a3cbd1eb33d270d4dc31c0cfd21cc811e8f83f6f3a05d6f8c763da01dd5c1eb5f8149bb6e8fa7db8b6d79e81ea7137c74af40fc789fd5320edcfeb8d719c14dbe2e608cbad7694d9eb1e4bd4e2b3092af1b78ba9834f3cff5324f1fbc2ed77975e8bd3550670d5c1bb311756dbf5b9a196e177d06ff5390ec985ec7a017ce0f04a04fe06918805ed4ce5a069ea9c1f01cc1d9a1c133fdb70c5c3ed07f240368351e26be66229a51053e2c5747f88260e454084ec9d254084ec95679b2e0140cd5b71fa56cb368ba61e0e4f1a1a79f1a3875f8ccdda787068eec1dbc05a96b3d7a248d6b0192a28fb6c9c1f0a44d5f90ec624c9d17ab54f24c86d749c9f3b432b533bce84df1da54e7b52907756ae16f5318da9981b8746cda9f12113bc18128d462ea28b4981ac133759cb5c0896ff2614fa5bfe3e24995d716ecd1d8263fcf136d10055c0ac7cf3838fb37dbd96b5d632605c3279b464f7b476b4f829d31b5572d3b236a6740ed10646738ed8ca6bda8d9194b3b43696724ed0ca49d71b4338c7646d1ce20da19433b43d81c146700ed8c9f9de1b3337a9700db9781d77eaab657483b236767e0ec8c9bbdb3b29fd8ecdd88bdfbb6778af6eec0de15d84f967696c15e6ded9d8cbd4adb2babbd53b47788f68ededee1da55aa0dc6363aad3719db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc6f619db6fec52639705c5d9f5cb8d5d61ec4a634f377695b1ab8d5d63ec5a63d719bbded80dc66e347693b19b8d1d34d66fec90b1c3c68e181b3076d4d82dc68e193b6eec19c66e0d8a4fe89c3476cad8a0b1d3c66e3376c6d8d9a0b8626657c8ec8a985d01b32b5e7685cbae68d9152cbb626557a8ec8a945d81ba3f28ae30d99522bb32645705ec2a809df5b7b3fccf0f8ab3f876d6fe45417156decec2db59773bcb6e67d5ed2cba9d35b7b3e47656dcce82db596f3bcb6d67b5ed2cb69db5b6b3d47656dace42db59673bcbfc48509c45b6b3c67696d8ce0adb59603beb6b67791f0d8ab3b876d6d6ced2da59593b0b6b675ded2cab9d55b5b3a876d6d4ce92da59513b0b6a673ded2ca79dd5b4b39876d6d2ce52da59c92f187bccd8df18fb5b637f67ecef8dfd83b17f34f645635f32f64fc6fed9d8bf04c5bcfc5763ff66ec2bc6feddd87f18fbaab1ff34f635635f37f60d63df34f6b8b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b11f19fbb1b19f18fba9b19f19fbb9b15f18fba5b15f19fbb5b1278c3d69ec37c67e6bec77c67e6fec0fc1f0ea060e227f743b34d3de3f343470f2f450f3d060f3c9db4f0c1d3f7de2eee63b8f0f1d6b1ebc63e0ccd1138377e29bdfe3862d5a46d874e64cffddcdc74f1d19b8ab79f0f6a1e6c1a3cd87066f3f75e42cbee98bee4d0bcf8dd87fe4487cb06f563d05d2ef8c31e82fddfb68816657e9b63d311641fe309637cdac1e5b832e75571dfaf47e45f16eb7f9ec89c1a1e67cf329f36fff09f39e81232dcdf8b7b346e4b343cd6787facf0c351f3d3378b2b9b5058f7bed943134a2a6690c6f6a691a7dcb83ff0711681f3f2d0a0400", + "packedBytecode": "0x000000028df71de5000000477a1f8b08000000000000ffed9d777414c7dae65b2030782404ced9c2e13a60632144163038e78c8d31c62004061b104118e76c72748e6072ce064c30068cb1af6fced9e95edfb0e7ec7e7b76ffd8ef3bbbebddae997a3f3d14d58346ee1a1e69aacf294df5abea7e7ff5f4dbd5a9baab20484fff0a5381ce370fd379c1e193fc3fa97fcbbedfd429c67595b9e42c68249ccd1a0967f346c259d848385b3412ce968d84f39846c2d9aa9170b68e91b300f85cf11edbc878138d8cb728681c715bdc4838db3412ce9246c2d9b69170b66b249cc73512cee31b09e7098d84f3c446c2795223e13cb991709ed248384f6d249ca73512ced31b09e7198d84f3cc46c2795623e13cbb9170963612cef68d84f39c46c2796e8c9c1d8053eee59faf7f7fa07f2fd0bf17eadf8bf4efc5fab783ae63a19ebf244c9786a963982e33fea7845137f4cbc3d4d9f85f4598ba84a96b98bae9ff95eaff750f538f30f50c53af305586a97798fa84a9afd6a35f982e0fd31561ba324c5785e9ea305d13a66bc3745d98ae0fd30d61ba314c3785e9e630dd12a65bc3745b986e0fd31d61ba334cfdc3745798ee36580684e99e300d0cd3bd611a14a6fbc234384cf7876948988686a92a4cc3c2541da6e1611a11a607c234324ca3c2f460981e0ad3e8308d09d3d830d584695c98c6876942982686a9364c93c2f47098261b9a3d12a647c3f458981e37389f08d393617a2a4c4f87e999303d1ba6e7c2f47c985e08d38b619a12a6a9619a16a6e9619a11a699619a15a6d9619a13a6b9619a17a6f9617a294c2f87e99530bd1aa6d7c2f47a98de08d39b617a2b4c6f6b16d911de09d3bb615a10a685617a2f4c8bc2b4384c4bc2b4344ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2b4394c5bc2f47e98b686695b98b687e98330ed08d3ce30ed0ad3ee307d18a63d61fa284c7bc3b42f4cfbc3f471980e84e993301d0cd3a761fa2c4c3f0cd3e761fa91a1f98fc3f49330fd344c3fd3b69febdf5fe8b2b2cfff52fffe4afffe5afffe46fffed628ff3b63fef7c6fc1ff4ef1ff5ef9ff4ef9ff5ef5ff4ef17faf74bfdfb95fefd5aff7ea37fffaa7fffa67fbfd5bf7fd7bfffd0bfffd4bfeaf9dfdbedd3f95641dd940c626a932a860f55f7ff456cf3f9a27a76d55cff4f7e4bb5bd50cfcb6f81b6b7d0f32d0c7b4b3ddfd2584f2b3ddfcab0b7d1f36d0c7b5b3ddfd6b01fa7e78f33ec27e8f9130c7b7b3ddf1eec09fdbf74c5d23fcad65c9b0ac026f1d90c6c2db4ad39d85acaeac0768cb6b5009b6cdf96606bad6dc780ed586d6b05b684b6b5162dc354a46dc920ae58291baad65b1cf77af5339336f1f356a9f59638e26d1b3fef30b5de760e78557c1ca7d7550c7173bcb6b501db09da5602b613b5ad2dd84ed2b676603b59db8e03db29da763cd84ed5b613c0769ab69d08b6d3b5ed24b09da16d2783ed4c6d3b056c6769dba9603b5bdb4e035ba9b69d0e36dde4066780ed1c6d3b136ce76adb59603b4fdbce069b9ce395824dcef7da834dcefdce019b9c079eab6daaed685d00feb45ddaad943f69b3c1f60369afc17681b4d560bb50da69b05d04bec57631b43562eba06dd26ea9fff5d4f96410d77e529eda4f7ac5bdde70cd6abdbde35f6feaf95d9fa04eeb24f8e9055af5d5f918fbb67442df726e237ec45e08f9eba1ac94133de4d823ecea1853a9f37d332cd7d358ae18ca545aea9f0ce2ad7f6f83a7b7c1dc02f26e62b673998fd97a4f59c7ec00286bc69e9c0735c598bd09381cc46c858fd97a4f59c7ec08286bc69e9c0b37c598bd17381cc46c7737315b5ee663367d6f2c08ecb127d7434d3166470147fc31dbc5c76cfda7ac63f639286bc69e5c1337c5989d0c1cf1c76cb7eefedca0de53d6313b0fca9ab127f7679a62ccbe081c0e6276986f67eb3d651db30ba0ac197b72afb029c6eccbc0117fccf67014b39d7dcc06e9e79c41608f3db96fdd1463761170c41fb3c3fcfdd9fa4f59c7ec4e286bc69e3c43698a31bb41e7d573869febe70c6780ed17da7626f0c61fdbd5e58e62bb938fed74ff8f20b0c7a83ccf6b8ab1fd91ceab38fe15f44710dbafa5af02d87ea36de780edb7da762ed4cbc13ed0cdef03f5af53b6fbc09fa1ac19cbf26cb929ee03bf000e0731dbddc76cfdeb946dccfe17286bc69ef473688a31fb25703888d91e3e66eb5fa76c63f6dfa1ac197b17ea7c538cd9ffaaf3ea7ce18ffa7ce162b0fd49db3a80edcfda7609d8fea26d9782ed0b6deb08b62fb5ed32b07da56d6560fb5adb3a81ed1b6d2b07db5fb5ad33d8fea66d1560fb56dbba80edefdad6156cffd0b66e60fba7b67507dbbfb4ad87b6a9e75dd2f7eaa0b6b502fe6410efb6957e97b26e99ef9403df2586ef921cfa6e67f86e67f15deec077027cc85460cc27215fee96a7ac1878d05745fcbe3aabba770eea5ff70ae0e9e2a0ee09f0511f9e2ec0d3357e9ed4f1b35bfceb4d6de3ce86a609f0d519ead5dd41bd0ac097ac5be6c55f31d8b06ded6e61ec113f637901f89275cb7c0f60141bb6f5f22e95ec3fea787841411daf837d29754e24fee4db55c251017629d3a97d1d5b07cd5604ffc7e35e57c3e6282e537121be64dd322ffe8aa03e5d73cf585e5fc62e06a3ab36a2007cc9babdefbaed20793c8ebbb8d6b1b569e2bb570e7cf7307c5718beb1ed9429d3b1ad0730c77ecda98f6d95f1afb70caf4fe4da50fce0f9035ec3c55527f42dd786e247ec8590bfb9a0aeac94133da41d167615cbb22d91dd5caebbb15c3194e965a97f3288b7fe95064fa5c1acb6c915702c74b03fa462a097c121f315a05d658476bd403b29732168e7aa3deb69f0c87c57e09176ac1bf0b8ba268ae2c9c5f5d8917ce3392c5e3fcbfff13cc0d5f6ea6430cabc6d7bf50046dbb98a83eb998ce72a5d80516c3d81a7b323cda2b66b6712df0e6225d51e890f393797fdb72bd8a54c0ffd429d6a2b1f84b6d2458c603cca54df6bdef8b75379ea1abc4b163cb8ed1c5c577572148f6578ffe6bb20de5833dba52e865651f7785cb5e59d0d1e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f17912f6db92725d4918cdfe6faeeef3a7be61a8d725eb57cf75feb7d3fe60e565d83f46fa415c6cd4b910ca1437ab2bfbffa03f98f99c0afb487675ab5d6a5b627fcc24cc8b3fec6b85db92a1bf53696cbed3dfa274f1bc4d7d034c7d47d3ecfbd9d5a2a98bfecfa86981a129f6c7bfc4e051715ad9bc8ecdc5b3bf6c9f45a256928ff3d95e71608ff5f8b74bf921cfac9b0587b61f789c71d57f47da6a795edecbf05d08654e6f56b76da46f958c33dbd9580efbfdc8ba65998bc15e69acbb442f2b1c2d8cf5778365a5cc59d0a6ee6b56a79983b6b23cdbbeebf8dc3cfee370fa397ee72c783a018f8b76c6d1f9c621df5b8dfb39bed93fcd761e2365b06f9f837e9519fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd7569030e6a8ef43ea79867cab4cd69ffa5e70b33abfae9fc3c933a70e469df1ddd1ffdeacaeec169d2f0a0eefef10b52d5d7d9f226a5b8a3ffcf60c3e0b72f15cb7007cc9bacb2d5a48be3436dfe5cec68690e7f89d0d5d2b2c9abada5ff1192b6a8afb6b1783079f8d467ddba7dcb0b9ec3b141517e20ff7a572b0491edf8f76b19df15862f6eb117ff8fcfa475adb92c0d5b62f2f73d96ee0775392c1e1f18ddf53f939b47dbfd479ecc3817d47beb6fc5fa64ccfa9453f556707dfd72c2b8075c9f6b57ddbb31fb0c6e4bb13aeab40a77e86068590ffaa595d59292765456b6157fb887c0306d9cde5ba18cb1543993e96fa278378eb6f7e6bb5afc1acb6c96f20cebe86e3bfab36a94f84461783465206cf835cf5c933db48b37f23f6db6b6994c1731629f32f68a3a2fa8fdafa1cba3a8e45f539b49d1b770246b38e663fcf7cefa7f51fd05ec4dd4feb3f2086b09f5660acbf03ac5fb85a06d1c71629f37f8df59be7e4b20cf603fbcffe4ff03d97729dcfe69cfc685d5fd9cec971b9a8ba2b66fc0e5a3246668c0964c1f3042973acd65ab6596504770fcbb2c511cb8a56e6b7c28a82c3f573f39db5f43edfd7a88bc4357e835cca1c0f757173de923e0774f54db924d449e5cb2d759532a7c0be769ace27603be17e7b91e5ff32653a07c431dc2f8fbfcea9ed7b057026c10ffabe125863f2dd097dcb39a0f8117b21e42f6c5e5756ca891ea2b5b0ab7d44cea390dd5cae97b15c3194e967a97f3288b7fe971b3c971bcc6a9b9c09717611f44377d556f78bd0a803682465f09ea2ed3ba0b6638cabbefd51c798726034db4d3c4eba6433df1332efabd9ce11a48c2c8be708dda09d4d58ca9af70be5781967bf617c57a21bf8c577255c7dbbb927e89684793c2f389abe5d7cc756f98b1a33a1670e7c478d99900bdfed0cdfed72e8db6bee3567d2dcc11804a9f7cff09ba56aca745e8ae312c872cd80d1c5580e89e0d06f8f1f8911c77790e59a03a38be343b6df3eef068cb25c2130ba78b714c7dfa80f237e63188ff3c2e8e05bb19d1afaad58bca7d7121899ded9c46753c700a38b7ba80d7d570fcfe75bc1afab71893a67c188e7f3b25c6b6074716f1c9f0dd68711af8b64b96381d1c533ac6cc777c26fcfe3bd65978c998eed8efba294677befa5d22d4fc6730df4ed605cc39416789ff1485af476cb93f1dc077d3bb8ef97d202c7193c9216f86cd0c5b88789e0d0e77047e2c1e797b2dc71c09874c4d8370bc62430fee7bd6260ece788319905633f6014fb09c0e8e0fe6b8ab15f168c789f52963b1118af70c47879168c5700a32c771230bab8979a00bff561bc121865b99381f12a478c5766c1781530ca72a700e3d58e18afca82f16a6094e54e05c66b1c315e9d05e335c028cb9d068cd73a62bc260bc66b8151963b1d18af73c4786d168cd701a32c7706305eef88f1ba2c18af074659ee4c60bcc111e3f55930de008cb2dc59c078a323c61bb260bc111865b9b381f126478c3766c1781330ca72a5c078b323c69bb260bc191865b9f6c0788b23c69bb360bc051865b97380f156478cb764c1782b30ca72e702e36d8e186fcd82f1366094e5ce03c6db1d31de9605e3edc028cb9d0f8c773862bc3d0bc63b805196fb0130dee988f18e2c18ef04c63b2c8cfd1d31de9905637f6094e52e01c6bbe2674c5d4bf7cf82f12ee0b93b7e9e94667765c173b75b9ed477f5eeb2f8ba277e5fa96d3120a87fddef019e81f1f3a4b6c53d59f00843312c879add1b3f634ab3815930de0b3c83e2e74969766f163c8340b37b2d9add173f634ab3415930de073c83e3e74969765f163c8341b3fb2c9add1f3f634ab3c15930de0f3c43e2e74969767f163c43823acdeeb76836347ec6946643b2601c0a3c55f1f3a4341b9a054f156836d4a2d9b0f819539a5565c1380c78aae3e74969362c0b9e6ad06c9845b3e1f133a634abce827138f08c889f27a5d9f02c78468066c32d9a3d103f634ab31159303e003c23e3e74969f640163c2341b3072c9a8d8a9f31a5d9c82c184701cf83f1f3a4341b9505cf83a0d9288b660f39627c300bc6872c3c717f27fb418baf318eea3e3aa87fdd85a11896c37e12631d318ec982712c30ca72d84fa2c611e3d82c186b8051964b3866ccd44fa2067c8f8bdf77aa5daa09eaafcf38b73c19fb49a0eff18eb41817d45f8bf16e7932f69340df131c69313ea8bf16138067a2032d12e0a33e3cc2500ccb613f895a478c13b360ac0546590efb494c72c4589b05e3246094e5b09fc4c38e182765c1f83030ca72d84f62b223c687b3609c0c8cb21cf69378c411e3e42c181f0146590efb493cea88f1912c181f0546590efb493ce688f1d12c181f0346590efb493cee88f1b12c181f0746590efb493ce188f1f12c189f0046590efb493ce988f1892c189f0446590efb493ce588f1c92c189f0246590efb493ced88f1a92c189f0646590efb493ce388f1e92c189f0146590efb493ceb88f1992c189f054659ee21c78c99ae5f9e6de2bea3ae559abaefa8eb92a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3fe7c077027cc85460cc27212f0cc5b0dc439eb14933224f697c3c655877f4f53c41dd9fb7f01438aa3bfa7a81a0eec2d0d8189f6b048c0f350246af63ba0f62431815cf8bf0ff648c3c2f64c1f322f04c71c4f362163c5380676afc3ca9989a92058f3014c3720f3502c6e71a01a3d7d1ebc8c4e875cc1f1d3da367f48c9ef16830368636dc33368a782c6f28a3e299163f4f4ab3a959f04c03cd64b9bb1b01e3f38d80f139b78ce50d65543cd3e3e74969362d0b9ee9a0992c77b75bc6f286322a9e19f1f3a4349b9e05cf0cd06cba4533078ce50d65543c33e3e7496936230b9e99a0d90c8b660e18cb1bcaa87866c5cf93d26c66163cb340b39916cd1c3096379451f1cc8e9f27a5d9ac2c78668366b32c9a39602c6f28a3e299133f4f4ab3d959f0cc01cd665b3473c058de5046c533377e9e946673b2e0990b9acdb168e680b1bca18c8a675efc3c29cde666c1330f349b6bd18c95f1a146c0f85c236074ac6379431915cf7c473cf3b2e0990f3c2f39e2999f05cf4bc0f372fc3ca9987a290b1e612886e51e6a048ccf350246afa3d79189d1eb983f3a7a46cfe819b3637cbe1130fa6ded1959191d5c5f657c17e9a526ee3bea5da4a6ee3bea5da4a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbf12bfeff26cbf31f30af0b8f8e68da37a96a9f5beaad7f55d8cfa29ad5e33b47ac9d0aa18cabc0afabde640bf02f02beb9679f1972df30504cc8e7c97b709d7d11aea2f3e9e33f450fe5f7754f7a8b6fef526ee3baaad6feabea3dafaa6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc537e65b0475e7edf2fd53b58e3774be50cf4bf9e7c12e651e3f26fd5b12f87dc8856fbf0ff963453ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c633c8ccf014f60f0041978a691f15493f10c20e3b9818ca72f19cf7c329e47c878ba93f18c26e3b99f8ce776329e67c978ae26e3799a8ca71319cf44329ee9643c23c8780692f1dc44c6d38f8ce731329e4bc978ba92f18c25e3194ac67327194f1919cf8b643cd792f1e4e2fda56c783a92f15492f14c22e39941c633928ce722329e41643c1792f1dc42c67305194f1b329e12329e0a329e27c878c691f10c23e3b98b8ce77a329e3e643cf3c8782693f1f420e39949c6f32019cf14329ec1643cb791f15c45c6733119cf53643ce5643ccdc9782690f10c27e3b9878ca70319cf8d643c49329e47c978ba91f1cc22e31943c633848ce70e329e17c878ae21e379868ca717194f2d19cf03643cf792f15c40c6733319cfe5643c45643cc5643c5dc8781e27e3994dc65343c633958ca78a8ca73f19cf75643cbdc978e692f13c4cc6d3938c671419cf7d643cb792f15c49c6731919cf93643c6dc978da91f17426e39943c65340c093080e1fc32401ff7f056ccd8c65d5675f6bdbd7fdff4d6d6f06cbbca5f3cd2deb7e136cf22dd9b72ccba24e6f425d923a5ff6fda6944ee82b09f3e2af0838de22e19943c6d3998ca71d194f5b329e27c9782e23e3b9928ce756329efbc8784691f1f424e379988c672e194f6f329eebc878fa93f15491f14c25e3a921e3994dc6f338194f17329e62329e22329ecbc9786e26e3b9808ce75e329e07c8786ac9787a91f13c43c6730d19cf0b643c7790f10c21e31943c6338b8ca71b19cfa3643c49329e1bc9783a90f1dc43c6339c8c6702194f73329e72329ea7c8782e26e3b98a8ce736329ec1643c53c8781e24e39949c6d3838c673219cf3c329e3e643cd793f1dc45c6338c8c671c19cf13643c15643c25643c6dc878ae20e3b9858ce742329e41643cf23d4f169e91643c33c8782691f15492f17424e379858ce75a329e17c978cac878ee24e3194ac633968ca72b19cfa5643c8f91f1f423e3b9898c672019cf08329ee9643c13c9783a91f13c4dc6733519cfb3643cb793f1dc4fc6339a8ca73b19cf23643cf3c978fa92f1dc40c633808ca79a8c671a19cf780bcf2b8e78e47d7759b7ccbf42e2dbc1762853eb7ddb519dded1eb6aa1d72bfce2af10ca4c3d36fdab9e0fe1b2c2657e9f00efc5bd031abde3a82eb23d0a8ced83bedf70e4dbfc5eb3ccbfd1c47d9718be4bf2c4773bc377bb3cf1ede3dcc7793ef8f671eee33c1f7cfb38f771cee4dbc1b541397e274da602633e0979bc5e70f17d3947f53ce43af1bb18f5535abd6b68655e5b154399b741bf771de867bbf69479f1972df30504cc1817a541bc71b120fe3a95ab7e99ad41d70586be58af858e348d3a862c6ce2bea38e214ddd77d431a4a9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fd9ecec778dd58863ed4f345b91e780ffc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732cd12e9df92c0eff32e7cfb7dde1fdbf2c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b73332ffdc52f043657fdf9a3623117ef121c4ddf51b1d8d47d47c56253f7ede3dcc73993ef250e7c27c0874c99faf82d019e450e781cd533f56c63a951a7578c3a1543193cc62f7550cf02f02beb96f9a5c023d378e0711107f5d9e6c8338d8ca79a8c670019cf0d643c7dc978e693f13c42c6d39d8c673419cffd643cb793f13c4bc6733519cfd3643c9dc8782692f14c27e31941c633908ce75d329e9bc878fa91f13c46c67329194f57329eb1643c43c978ee24e32923e379918ce75a329e8e643c95643c93c8786690f18c24e3b9888c671019cf2d643c5790f1b421e32921e3a920e379828c671c19cf30329ebbc878ae27e3e943c6338f8c6732194f0f329e99643c0f92f14c21e3194cc6731b19cf55643c1793f13c45c6534ec6d39c8c670219cf70329e7bc8783a90f1dc48c69324e379948ca71b19cf2c329e31643c43c878ee20e379818ce71a329e67c8787a91f1d492f13c40c6732f19cf05643c3793f15c4ec65344c6534cc6d3858ce771329ed9643c35643c53c978aac878fa93f15c47c6d39b8c672e19cfc3643c3dc9784691f1dc47c6b3908ce756329e2bc9782e23e379928ca72d194f3b329ece643c73c8780a087812c1e1effe27e0ffef824dde517f056ccb747e11d89a597c34d7f9a5602bd47959c731617abafde1eb469d5cbd978fbe92302ffe8a80631909cf1c329ece643cedc878da92f13c49c6731919cf95643cb792f12c24e3b98f8c6714194f4f329e87c978e692f1f426e3b98e8ca73f194f1519cf54329e1a329ed9643c8f93f17421e32926e32922e3b99c8ce766329e0bc878ee25e379808ca7968ca71719cf33643cd790f1bc40c6730719cf10329e31643cb3c878ba91f13c4ac69324e3b9918ca70319cf3d643cc3c9782690f13427e32927e3798a8ce762329eabc8786e23e3194cc633858ce741329e99643c3dc8782693f1cc23e3e943c6733d19cf5d643cc3c878c691f13c41c65341c65342c6d3868ce70a329e5bc8780691f15c44c633928c670619cf24329e4a329e8e643cd792f1bc48c65346c6732719cf50329eb1643c5dc9782e25e3798c8ca71f19cf4d643cef92f10c24e31941c6339d8c6722194f27329ea7c978ae26e379968ce776329efbc9784693f17427e379848c673e194f5f329e1bc8780690f15493f14c23e3199f231ef56ebbbc3b1900174e49c82f059e771df038aa67197ed7e0bb18d7abb45a6e68b5d0d0aa18ca2c01fd963bd0af00fccaba657e39f0c8f991b0e237159e256114dbbb8e791250679932ed03cb81c7c53ee9a89ea9585d61d4e9598bee5206637585837adaf61d995f013c2fe8bcb026a0dc0b248c625bea98270175962953acae001e17fb8ea37aa66275a551a7172cba4b198cd5950eea69db77647e25f0bca8f3c29a80722f92308a6db95b9e8a04d459a64cb1ba12785cec3b8eea998ad555469d5eb4e82e6530565739a8a76ddf91f955b01d3cb367b6312b1ee96f2bac0928378584516c2b9cf2549425a0ce32656ac756018f8b76de91eea9766cb551a72916dda50cc6ea6a07f5b4ed3b32bfdae2bb3488578b35f5d0628d85674d8eb5107fd9322f6984cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc0c3a2b1e19ff4e5813506e2a09a3d856bae549bd17343538742a30e693905f033cab1ce8e3a89ea93ee46b8d3a4db5e82e6570ff5aeba09eb67d47e6d7c276c88679752364f63a378c59f14cd379614d40b969248c625be59627d58e4d0b0e9d32b5636b81c7453befa89ea9766c9d51a76916dda50cee5feb1cd4d3b6efc8fc3ad80e9ed933db9815cf749d17d604949b4ec228b6354e79ca53ef374e0f0e9d32b563eb80c7453bef48f7543bb6dea8d3748bee52066375bd837adaf61d995f0fdb211be6d58d90d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a6786ce0b6b02cacd206114db5aa73c9d53cf1d6604874e999e3bac079e75b1f3a49f3b38d03df5dc618351a71916dda50cee5f1b1cd4d3b6efc8fc06d80e4d9d79752364f6b1911b661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e6266880dc53353e7853501e56692308a6d9d5b9ed4770f6606874e99faed6c009ef50ef47154cf54bf9d8d469d665a749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3745e5813506e1609a3d8d6bbe549b563b38243a74cedd846e071d1ce3baa67aa1ddb64d4699645772983b1bac9413d6dfb8ecc6f82ede0993db38d59f1ccd679614d40b9d9248c62dbe09627d58ecd0e0e9d32b5639b80c7453befa89ea9766cb351a7d916dda50cc6ea6607f5b4ed3b32bf19b68367f6cc3666c53347e7853501e5e690308a6da3639e04d459a64cedd866e071d1ce3baa67aa1ddb62d4698e45772983b1bac5413d6dfb8ecc6f019eb93a2fac0928379784516c9b1cf324a0ce32658ad52dc0e362df7154cf54acbe6fd469ae45772983b1fabe837adaf61d997f1f78e6e9bcb026a0dc3c1246b16d76cc93803acb942956df071e17fb8ea37aa66275ab51a77916dda50cc6ea5607f5b4ed3b32bf1578e6ebbcb026a0dc7c1246b1613b36df114fb1c1536cd1e268f956f3bd74be48ff26e0ffbd80d155db32df6094798c71e475ad5989c153626876347dabfa57ea7c1bfd8bdbab121819b657490e346b67f0b433343b9abe9516bd75beadfec5edd51b1819b6573be071d03e57240c1e35653a766f75ac8fa37aa68edddb02bbee781c923278ecdee6a09eb6730999df06dbc1337b661bb3e2e9aff3c29a8072fd4918c586e7fcdbe3e7a948183c6acad48e6d77ac8fa37aa6dab10f02bbeedb41772983b1fa81837a16805f59b7cc7f00db211be6d58d90d9ebdc3066c53340e7853501e50690308a6d1bf0ec889fa72261f0a829533bb6c3b13e8eea996ac7760676dd7780ee5206f7af9d0eea59007e65dd32bf13b64336ccab1b21b3d7b961cc8a67a0ce0b6b02ca0d246114db07c0b32b769ef4982fc8a3a64cedd82ec7fab8a967ba1ddb1dd875df05ba4b19dcbf763ba86701f89575cbfc6ed80e9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99b99915cf209d17d604941b44c228b69dc0f361ec3ce9e70ec8a3a64ccf1d3e74ac8f9b7aa69f3bec09ecba7f08ba4b198cd53d0eea59007e65dd32bf07b68367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b666e66c53358e7853501e50693308a6d37f07c143f4f45c2e05153a6e70e1f39d6c7513d53cf1df60676dd3f02dda50cc6ea5e07f52c00bfb26e99df0bdb61af67f6cc1666c53344e7853501e58690308a6d0ff0ec8b9d27fdfc1479d494a91ddbe7581f37f54cb763fb03bbeefb40772983b1badf413d0bc0afac5be6f7c376c88679752364f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdcef9a3b3e2a9d279614d40b92a1246b1ed059e8f63e7e95c963078d45460cc2721ffb1637ddcd433fddce14060d7fd63d05dcae0fe75c0413d0bc0afac5be60fc07668eaccab1b21b38f8ddc30fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c731433436c289e6a9d17d60494ab266114db7ee0f9247e9e8a84c1a3a602633e09f94f1cebe3a89ea97e3b0703bbee9f80ee5206f7af830eea59007e65dd327f10b68367f6cc3666c53342e7853501e54690308aed00f07cea802761f0a829533bf6a9637d1cd533d58e7d16d875ff1474973218ab9f39a86701f89575cbfc67c03352e7853501e54692308aed20f0b888d502ed0f7964fe5302df6abe46e78bf42f6eaf1a6064d85ec539d0acc4e02931343b9abe55fdc7e97c1bfd8bdb6b1c30326caf921c68d6cee069676876347d2b2dc6eb7c5bfd8bdb6b3c30326caf7639d0ec68b6874773df3e9a71ea353f7a9a171c45cd0b8ea2e6055e732acd1d1c5fcaf1581600034e49c87f063c9fc7cf93bac7f559163c9f03cf0fe3e7e9e4a89e656abd3f02f6b8d6abb4fab1a1d5678656c55006197eec40bf02f02beb9679f1e7993d7314339edb0a6b02ca7d4ac2283669835cb51baaee97ea75c9fa5b84e9e009757e5d3c7bc0fbae2df47a8543fc1542997b4aebca7eaed98ae0ffb2dd547d0e183647ef0377b23d039379f15714e4ee3e68a6fbb2a8858b6737d91ef70f5878be8b8fa70cf773f4b5df51ddb3798eb6dfc21363dd3b453d43dc177fdd53ed4747bd2e59bfda47bf38c1a9e615b8ef49fbd1d1a8732194e9525a57f61b683f6c6d85eb7d53cec9cd7db35950d79e0957a9b69bcf57bed37629f70994c736a797fec5fdb317d4d555bb18758f09db45b3ed76a9bdf98ccff45d0cba7c42aa99ed3905ea5869e1ae24e0c678cce57e26ebb63d23ab347464d30cb7f527161d7b5bb87b137033eed7bd0d1dd9343bd27edddfc2dd9f809b71bfee6fe8c8a6d991f6eb0116ee0104dc8cfbf500434736cd8eb45f0fb4700f24e066dcaf071a3ab26976a4fd7a90857b100137e37e3dc8d0914db323edd7832ddc8309b819f7ebc1868e6c9a1d69bf1e62e11e42c0cdb85f0f090ed5914db323edd75516ee2a026ec6fdbacad0914db323edd7d516ee6a026ec6fdbadad0914db323edd7232cdc2308b819f7eb11868e6c9a1d69bf1e69e11e49c0cdb85fd7b7df3eeb7e5d63e1ae21e066dcaf6b0c1dd9343bd27e3dcec23d8e809b71bf1e67e8c8a6d991f6ebf116eef104dc8cfbf578434736cd6cfbb5a3f7f2cab37d4ff0a0537dd2e3351fcc82e763e07111538ee2a0cc513f9754dfd47d8656070dad701c8cfda09f83be3019dfef177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f11b87f87c45ca7d42c228367c26e5e23ebfaafb657a5db2fe1661ea71529ddffdb1fb2d2f2b30fc258143fc1542996667d795edadd98a82c3b71b8e6b8ddb726fec75486f4b33fe655efc15417df6018f83f7f3533cfb0d9efd162df0bdd3787c970f73a3717999fa3e5eeba06e3bef35ea839a7e14bbff43352d3034fdc8b1ef4470e8f614069c9290471e17cf861dd533d516ec31ea646a5c0c652e807aee7150cf02f02beb96f93dc023133e9377158381c11358f491a919194f3519cf00329ef3c8786e20e339858ca72f19cf23643cddc9785a93f18c26e3b99f8ce776329eb3c978ae26e3c9c53978363c4f93f17422e3399e8c6722194f2119cf08329e03643c03c9787e40c6731319cf25643ca791f1f423e3798c8ca72b19cfa5643c09329eb1643c43c978ee24e32923e3694fc6732d19cf89643c95643c1dc9782691f1b424e31949c6731119cf20329e0bc9786e21e339838ce70a329e27c8782ac878da90f19490f18c23e31946c6731719cfb9643cd793f19c4cc6d3878c6732194f0f329e56643c0f92f10c26e3b98d8ce72c329eabc8782e26e3798a8ca79c8ce738329e09643ccdc9788693f1dc43c6d3818ce77c329e1bc9784e25e34992f13c4ac6d38d8ce758329e31643c43c878ee20e32925e3b9868ce719329e5e643c2790f1d492f1b420e379808ce75e329e0bc8786e26e3399d8ce772329ec7c978ba90f11491f11493f1d490f15491f1f427e339878ce73a329e93c8787a93f13c4cc6d3938ce718329e51643cf791f1dc4ac6732619cf95643c9791f1b425e36947c6f324194f67329e02029e4470f8b79812f0fffd60936f067d0cb66696f5c9735829af8e8bd3db1fbeee6696757f6461409d3e84ba2475beecfb4d299dd05712e6c55f11707c44c2d3998ce749329e76643c6dc9782e23e3b9928ce74c329e5bc978ee23e31945c6730c194f4f329e87c9787a93f19c44c6731d19cf39643cfdc978aac8786ac8788ac9788ac878ba90f13c4ec6733919cfe9643c3793f15c40c6732f19cf03643c2dc8786ac9784e20e3e945c6f30c19cf35643ca5643c7790f10c21e31943c6732c194f37329e47c97892643ca792f1dc48c6733e194f07329e7bc8788693f13427e39940c6731c194f3919cf53643c1793f15c45c6731619cf6d643c83c9781e24e36945c6d3838c6732194f1f329e93c978ae27e339978ce72e329e61643ce3c8784ac878da90f15490f13c41c6730519cf19643cb790f15c48c633888ce722329e91643c2dc9782691f17424e3a924e339918ce75a329ef6643c65643c7792f10c25e3194bc69320e3b9948ca72b19cf63643cfdc8784e23e3b9848ce726329e1f90f10c24e33940c633828ca7908c672219cff1643c9dc8789e26e3d947c6733519cfd9643cb793f1dc4fc6339a8ca735194f77329e47c878fa92f19c42c6730319cf79643c03c878aac9789a91f18c3778f0ffeadd30393f926f0715c2ff07ebcee5257a5d5246de5152f7ba761b3655df5d8eeabb3ba89b9230bf0bea2becbb8167b7239e0f0d1ed37711e42b41b39d864d31ee70c4b8d36094f91dc028faed049e9d8e7876193ca6ef22c8f706cd3e306c8a71bb23c60f0c4699df0e8ca2df07c0f381239e1d068fe9bb08f2fd41b36d864d316e75c4b8cd6094f9adc028fa6d039e6d8e78b61b3ca6ef22c80f00cdde376c8a718b23c6f70d4699df028ca2dffbc0f3be239ead068fe9bb08f20341b3cd864d316e72c4b8d96094f94dc028fa6d069ecd8e78b6183ca6ef22c80f02cd361a36c5b8c111e3468351e63700a3e8b71178363ae2d964f098be8b203f18345b6fd814e33a478ceb0d46995f078ca2df7ae059ef886783c163fa2e82fc10d06cad61538c6b1c31ae3518657e0d308a7e6b8167ad239e75068fe9bb08f255a0d96ac3a6185739625c6d30cafc2a6014fd5603cf6a473c6b0c1ed37711e4ab41b395864d31ae70c4b8d26094f915c028faad049e958e7856193ca6ef22c88f00cd961b36c5b8cc11e3728351e69701a3e8b71c78963be25961f098be8b203f12345b6ad814e312478c4b0d46995f028ca2df52e059ea886799c163fa2e827c0d68b6d8b029c6458e18171b8c32bf081845bfc5c0b3d811cf1283c7f45d04f971a0d97b864d312e74c4f89ec128f30b8151f47b0f78de73c4b3c8e0317d17417e3c68b6c0b029c6771d312e301865fe5d6014fd1600cf02473c0b0d1ed37711e4ef009bf0f604db3b3adf036c6feb7c77b0bda5f3ddc0f6a6ce7705db1b3adf056cafeb7c05d85ed3f9ce607b55e7cbc1f68ace7702dbcb3adf076c2fe97c5fb0cdd7f924d8e6e97c3fb0cdd5f9cbc13647e7af00db6c9dbf126cb374fe2ab0cdd4f9abc13643e7af01db749dbf166cd374fe3ab04dd5f9ebc13645e76f00db8b3a7f23d85ed0f99bc0f6bccedf0cb6e774fe16b03dabf3b782ed219dbf0d6c77ebfced603ba8f37782ed539dbf0b6c9fe9fc3d60fba1cedf0bb6cf75fe3eb0fd48e7ef07db8f757e28d87ea2f3c3c0f6539d1f0eb69fe9fc0360fbb9ce8f02db2f74fe41b0fd52e74783ed573a3f066cbfd6f9b160fb8dce4f00db6f757e22d87ea7f3b560fbbdce4f02db1f74fe61b0fd51e72783ed4f3aff08d8feacf38f82ed2f3aff18d8bed0f9c7c1f6a5ce3f01b6af74fe49b07dadf34f81ed1b9d7f1a6c7fd5f967c0f6379dc7b16effaef3a541bcedecb741dd540abec59f2af30f9d6f699491650ba1cc71ba83a37ac6a1be652aedb0b4cbca26edf03b609376f86db0493bfc16d8a41d7e136cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8923a3f1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493b3c1d6cd20e4f039bb4c353c126edf014b0493bfc22d8a41d7e016cd20e3f0f3669879f039bb4c3cf824ddae187c026edf0dd6093fde55bb049db7c106cd2367f0a36699b3f039bb4cd3f049bb4cd9f834ddae61f814ddae61f834ddae69f804ddae69f824ddae69f814ddae69f834ddae65f804ddae65f826d8cceff0a6cd236ff1a6cd236ff066cd236ff166cd236ff0e6cd236ff1e6cd236ff016cd236ff116cd236ff096cd236ff196cd236ff056cd2367f0136699bbf049bb4cd5f814ddae6afc1266df337607b46e7a5ad6e05367956aca6b2ef39e1383c78ce2f4cc920deb61fa724e49f86bacbd48c8ce725329e6a329e01643ce791f19c42c67337194f6b329e99643caf93f1fc958c673519cf2a329e6d643c5bc978ce26e3d947c6733c194f2119cf3c329e11643cef90f11c20e31948c6f303329e4bc8784e23e33948c67329194f828ce755329ee9643c2bc9785690f1bc4fc6b3858ca78c8ca73d19cf89643c95643c1dc9785a92f1cc21e31949c6f31619cf45643c83c8782e24e339838ca70d194f0919cf54329e71643c2f93f12c27e35946c6b3998c671319cfb9643c7bc8783e24e339998ca71519cf2c329e37c8780693f19c45c6b3808ce762329ee3c8789a93f1cc27e3594ac6b3848ce75d329e8d643c1bc8783a90f19c4fc6b39b8c671719cfa9643cc792f1cc20e3798d8c6708194f29194f2f329e13c8785a90f1cc25e3594cc6b3888ce76d329ef5643cebc878be25e3d949c6b3838ce774329e22329e62329e69643c35643caf90f15491f1f427e339878ce724329ede643cc790f1cc26e3798f8c672119cf9b643c6bc978d690f17c40c6b39d8ce74c329ecbc878da92f1b423e39942c65340c093008e006cf2ffe660fb46e70f804dbed7b30f6c5febfc02b07da5f3cf80ed498bad99854f18be019bbcdbfc14d8e4fee7d760937702be029b9c57897f353fbffde1fccd6019f1d3dcc28ffebeb270491eb7b72c930ce2dddee82b191cfe3da522e0788a84670a194f3b329eb6643c9791f19c49c6b39d8ce703329e35643c6bc978de24e35948c6f31e19cf6c329e63c8787a93f19c44c6730e194f7f329e2a329e57c8786ac878a691f11493f11491f19c4ec6b3838c672719cfb7643cebc878d693f1bc4dc6b3888c673119cf5c329e16643c2790f1f422e32925e31942c6f31a19cf0c329e63c9784e25e3d945c6b39b8ce77c329e0e643c1bc8783692f1bc4bc6b3848c672919cf7c329ee6643cc791f15c4cc6b3808ce72c329ec1643c6f90f1cc22e36945c6733219cf87643c7bc878ce25e3d944c6b3998c671919cf72329e97c978c691f14c25e32921e36943c6730619cf85643c83c8782e22e3798b8c672419cf1c329e96643c1dc9782ac9784e24e3694fc65346c6b3858ce77d329e15643c2bc978a693f1bc4ac69320e3b9948ce72019cf69643c9790f1fc808c672019cf01329e77c8784690f1cc23e32924e3399e8c671f19cfd9643c5bc978b691f1ac22e3594dc6f357329ed7c9786692f1b426e3b99b8ce714329ef3c8780690f15493f1bc44c6d38c8c67bc856781231ee9bb22eb96f9054ddcf72ec3f7ae3cf1bdc3f0bd234f7c6f377c6fcf13df5b0ddf5bf3c4f716c3f7963cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b4ff22d883dfa3701ffc7f1e3f639625c6030cafc3e60141b8effdecb114fd4b57b2f02df4a0be9bb28efd027e0ff95c0e82aa67a198c326f8b291c6fb4d2114fd43d874a02df4a0bf996a37c132b01ffc7f1535cc554a5c128f3b698c2f1bf7a3be289ba57d29bc0b7d242bee528df004ec0ff717c225731d5db6094795b4ce17813fd1df144dde3e94fe05b6921cf62e4997902fe3f00185dc5547f8351e66d31b515780638e289ba373580c0b7d242fa9e499fe504fc7f2030ba8aa90106a3ccdb626a0bf00c74c413754f6d20816fa585bc1b25efb026e0ff8380d1554c0d341865de16539b806790239ea87b8183087c2b2d06ebbc7c232701ff1f0c8cae626a90c128f3b698da003c831df144ddc31c4ce05b693144e7e51b9c09f8ff1060741553830d4699b7c5148ee73bc4114fd4bdd72104be9516553abf56ff26e0ff55c0e82aa686188c326f8b291cafadca114fd43de32a02df4a0be91b237d0613f0ff6a601ce288b1ca6094f921c028b655c053ed8827ea5e7735816fa585f4755fa97f13f0ff11c0e82aa6aa0d4699b7c5d40ae019e18827ea1efd0802df4a8b913a2fdff048c0ff4702a3ab981a6130cabc2da69601cf48473c51cf164612f8565ac8d807f24dbe04fc1fc7cb761553230d4699b7c5d412e0a971c4b3c8e05964d1e268f9565ac8b75f16ebdf04fc7f1c30ba8aa91a8351e66d31b50878c639e2897a96338ec0b7d242fa76bea77f13f0fff1c0e82aa6c6198c326f8b291c7f79bc239ea86750e373e03bea794a2e7c473d1bc885efa8fbdcb9f01d75cf3617bea3ee3fe6c277d4bdb45cf88eba2f940bdf51f73872e13bea7a3d17bea3ae3d73e13bea3a2a17bea3ae0972e13beafc3617bea3ced572e13beabcc3b7e7be3d8fdbf7d13c77c8d7f6fc681e438fe6b1c45f1bf86b835cf9f6c7127f6d902bdff97a6de0dbf3dcb7e772fd5510445f8f2d73e47b89e15be6f139cb1247be1719be651e9f192c72e47ba1e15be6f1fef74247be8b0ddf32bf3007be4b0cdf2539f4ddcef0ddcee2dbc5f64e04875e7f0b034e49c8630cbce780c7513dcbd47a17eb757d17e37a6df76dccfda518ca2c06fd5cb71db2ee4c6d47abf87c9725c0878c19a76cf22cf61db0491bfa36d8e419fb5b609376fe4db0c9f39d37c026cf7f5e07db489d3f0836790e8bfddfe559fa76b055e93cf6bb1ea2f35bc126fd92b0bfaff42ddb0236e91f88fd4ca58fe726b0493f5decdf287dad37804dfacb63bf3a79e7611dd8e4bd15eccfb54fe7d7804dbe5189fd88bed6f95560fb46e75782ed699d5f01b62774fe6eb07da9f3df82ed719d5f08b62f74fe3db03da6f38bc1f6179d7f0d6c7fd6f957c1f6a8cebf02b647741edf0bfb93ce7f08b6c93a8fef23fd51e77781ed619dc7f760fea0f33bc0f67b9d7f196c9374fe25b0d5eafc7cb0fd4ee7e7816da2cecf05db6f757e0ed826e8fc6cb0fd46e76781edd73a3f136c63757e06d87ea5f3d3c13646e7a7816db4ce4f05db2f757e0ad81ed4f9bf82ed173abf086ccd747e09d8647c41ecf321dfcc5c063619371bfbf2c85802e3c1768cce8f035b2b9daf019b7c676d24d864acde11604be87c35d88a74be0a6c72ae33046c32d6ca60b0c979c920b0b5d5f98160937388016093b10ffb834dbee7d91b6c32a67725d8e43bfebdc07692ce2f009b8c6fb60f6cf2cdb50360937184bf069b7c6bf91bb09daef34f834dc67c79026c67eafc97603b4be71f079b7c9ff30bb095eafc63606baff37f01db393aff67b0c9f8608f824dbee9f608d8641cde3f814dbe9d3c196c17e8fc1fc176a1ce3f0c361947e50f6093b1247f0fb60e3a3f096cf20de95ab05daaf3bf039b8c6d31116c97e9fc6fc12663184c005b279dff0dd8ca75fed760ebacf363c156a1f3bf025b179d1f03b6ae3a3f1a6cdd74fe9760ebaef30f82ad87ce4b3ba3f667b59fefd7f3c920def3ec8f8343a74ce7d9c2803c719eb716030ffada1b7bddcb53e7c8d21634d3eb9518da0bbef7c4ee3b7d7efe915e57a15eef1ec377219469ab1b07b59c1cf39bebe5f619cbe13d2159b72c7319d83f34d65da2ebfb91a3faee3198841b759032276826756cdcaef38ede872f57fb80c45a001ae29484bc30b8d1aabc0ccf85ebc3f311f0ec8d9d277dedeb222670df8afbdad7bc276ac65a3194d903fa7de8403fdcd765dd322ffe3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed933f3332b9efd3a8fcf9aa5dc7e1246b1ed051e17f7f9f139acac5f3dd75976769ddfbdb1fb3df4f95e0bbdde32a3ce8550e6eff0cc6995cee3389eb2dda2b6a583e78419b7a5f82b82fae0b3a0fd8e78f61a3c7b2d5a48be3436dfe5c3dc685c5ea6fab2a867ecfb0c5df75b3475b5bfeed5eb2a3034c5fdf56383079f8d1601ef27fa3701ebf904eae0601fcf1817e20ff7a5bd6093fcc7c0e8623be3b144da03791e8ecfa6a5cc3ee3b978fcdbbebccc65bbb11bea940c0e8fef42287310dabecf741efb86ec07dd7e67f9bf4c999e538b7eaace3be3af736afbee00ce24f841df1f006b4cbe0f791fa54027f123f642c8ff16fa734839d143b41676b58f489f4e643797fbd858ae18caecb2d43f19c45bff9d06cf4e83596d931f419cfd0e8effaedaa45d111a5d061a4999bda0d13e473c7b0d1ee1107faa8c6cff96461959b610ca7c096d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f147c068d651c5478f93ea78f7c6cedbb8fa7ffd1bb41771f7fffa3788a102e0088cf597c1fa85ab65107d6c9132ffd3388ebab8c6c06d69ea893a4b99ff05ed50c7d2743e9b73fda375dd1675aebfcb014f2238f4da5b4d998eef788cd9ed80c7513dcb6cc7ae0f8d3a1543990ba09e0ece6332be57bb137cbbd8e6a8859c43ed31b4288432ad4bd3bfd27644e988d7aa1fe5a42ee5d6f3c1324b5da44c49695d5d5a813d4e2697dbed03a8935aef5e4b5da5cc09a575ba9ca4f309d84e78dfe47ccbff65cad41ee0b836dbe2af736afb6e05ce24f841dfef036b4cbe0ff9ae869cef8b1fb11742febcd2bab2524ef410ad855ded23f2ce1fb29bcbed31962b8632db2df54f06f1d67f9bc1b3cd6056dbe4d4d2babcc491cb76737b844665a09194c1fbc7726cc7f7ee6cc7fdbd8eb8a38efb7b81d16c37f1dcc525db3e83cdbc876a3b1f9432784e26653a97a67f553b9bb09435ef0dbbb88f89ef9606508fc0a8ab4c18030eae0d2bf0da49da29f1d311ec7b755e74ee68685708657a97a67f1d9e775bef5d9ad777784d21dce6be85ef7e5c5e5ac7ade25eb6d35efd5b04b64ff56fabc0c9755a85ed9ea170d8ee195e5b5ac78ecb0ad7414b5dcc6be466c1e1f7d4bf33cae27db74ccba12f351d309651fa7e6a61da6bf86905cbc6f6ae46a7b2b228fe03c0f7b1c16cd355f6038cb9bd3a6fee2b786d2c65ee2e4dff4a9b649655dbfe8b13eaf491ed28da617b8231f931302675beecfb4da97dee80517f99177f8a51eef71c009ef8dbaef4fb4ad9dc07de073c2eda76476d74191e635bc5b6de1e55b6e3ffc78656397c5e6b3de69bcfdc5b19f9787c9757dbee3fd9b4d863e171f51c254a8b3d16dff169d17598ad9db36991cbbe0f515a7c68f11da31623f0be67262d765b785cdc8bcaa4c56e8beff8b4e85696e9b9066ab1cbc2e3eade439416e22f5be60f09985b19f9787c5754d9ee93d9b4d869e17175dd1ca5c54e8beff8b4e8d415efd165d262878527fefb7399b5d861f11d9f16dd7be03dbc4c5a7c60e171f54c374a8b0f2cbe638c8be1b67b39362db65b78b6e7588bed16df319e1f76b5dd6bb369b1cdc2e3e0be6b462db6597cc7a8c550bcef9a498bad169ead39d662abc5777c5a5475b1dd13b669f1be85c7d53de1282ddeb7f88e4f8ba1dd95ef2df5d0628b85674b8eb5d862f11de335542a2e36d7438bcd169ecd39d662b3c5777c5a54a7ceb536d5438b4d169e4d39d66293c5777c5a94a58ea91beba1c5460bcfc61c6bb1d1e23bc6b8485d4f6ea887161b2c3c1b72acc5068bef188f23a9b8585f0f2dd65b78d6e7588bf516dff169312275ff695d3db45867e15997632dd6597cc778cf2515176beba1c55a0bcfda1c6bb1d6e23b3e2d3aa78ea96beaa1c51a0bcf9a1c6bb1c6e23b3e2d86a79e89adae8716ab2d3cab73acc56a8bef18cf3b53edc5aa7a68b1cac2b32ac75aacb2f88ef1bc3375ff62653db45869e15999632d565a7cc7d876a6ce3b57d4438b15169e1539d66285c5778ce79d292d96d7438be5169ee539d662b9c5778ce79da9e3c8b27a68b1ccc2e36a3c91282d96597cc71817a9b673693db4586ae1599a632d965a7cc7785f2bd5762ea987164b2c3caec66b88d26289c5778cd723a97b7c8beba1c5620bcfe21c6bb1d8e23bc66745a973f045f5d062918567518eb55804bef7c5ee3bdd9f5b7c485fac4b0d2d0aa14ccbf6e95fe98b15a5a3ac03fb95615dde8bbd2ee97e650b23eaf21ed445ca14415d5a054ec6fba97054d754cc2c803aa9f57e62a9ab9469d7be4e97e3753e01dbe420e8768ee5ff321518f349c88b7eaaceefc45fe754acbe0d9c49f083bedf02d6987c7742df053a891fb11742be7dfbbab2524ef410ad855ded23efea3cb29bcb2d32962b8632ef5aea9f0ce2adff3b06cf3b0673eabd0788338923376d579ae9dd088d2e058da40cf6d9fbc4118fd9875038c49f2a23dbbfa55146962d843217431b85fd4aa59e89e0f07e938edab24ec82eeb9679f1570cb67dc068d651c5c741e8fb296345c83812ca26e3427486f574336caaaedd1dd5557cc9ba65be3b30ca3815dd72cf585e5fc6ae06a3e2e9e940331c7b43a64cc78b9ec0d3c3018fa37aa68e43bd8c3a7537ea540c65f0ddc65e0eea59007e65dd32df0b7cbbd8e6a8851c932f32b4288432d71ae78f513aca3a54fc76b3d4a58fe3bac8baa55dea9303df9586ef2e86ef4470e8760e82ccfb572530f776c0acd6db37fef596e1799bc494f8e90275ea071ac455275c979ce7f533b42d84fc7d709e27e5a4ac1cbf845dc5b26c4b643797eb692c570c65fa58ea9f0ce2ad7f5f83a7afc1acb6c9ed706ee7607f48c5401f8343e6bb80767d23b4eb03da49193cfe7573a45d6f83a7b7e15bf1c8394e2fb0c9b982f027e0ff9d73c06db67bbd2cdc62c371e26ce73a5de367cc78aed31518c5d61b782a1d69666eeb8b0c7df0b8dcd22823cb16429909706c4c58caaafdee8282ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6383bab11a27d6d64c18fac0f0db87a71f3d0a5aa18189bf05966a34031be69b5b6c4170e8909485609321295b80ad99210b0e8529e565483b1772a11eb2ee4283b315b0c4e91b87f3942953e81c033c2e4259858e0ce9a943e7ee09a36a87637cb430381b123bea7fcd33948b5a97abed60ee1349983763b0d091ffe650df24cc8b3fb56d8a757edcd0610ff59bf0c0a431c3c7d64e44a1cc1d1bf305c1a11bc0fc8d12dcd54e87018015c6c6a185512f6c30e47fb2618e8d9fb302c7cc35b509c09f4cc7826ead1de8a6d62f63df0e1b3a7af4ad93aa468f1a76f5a4b1c36a47d58cc5add9ca502e6a4bcbff5b82cdd6c463593561b385cb1e63b1d9261c65b815d8e4c8d51a6cc2732cd89a435eca9b5bc649b89e07eb975d4afd4f89d34257fc98a02e04e470acda55b5ffaacfc7aad32035d4b11ada586d4e3574b1ba63a88626565fb153430faba186d5d0c2a705e9a183d550c16706e9a180d5d72e4a83f4d0bee7047543f7aae920709e1fa487e655b7692e0cd2a75d6a68dd0e417ae85c75eb52bdbaae3ef3a6dead57a7efeab6803ae5559778ea72449d82aa534f75fb42ddca52a774ea74599d0aaad3377539d2576bdd2f4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e30dd19a48777be2b480fbfae867fbe27480f0d7d6f901e36fabe203da4f4fd417ab8e9a1417a28ea61417a98eae1417a08eb0782f4f0d6a382f4d0b90f05e9a176c704e9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f263417a18663564f393617a2a480fe9fc4c989e0dd373617a3e4c2f84e9c5203d3cb81a367c5a901e665c0d3f3e33480f573e3b480f6fae863d57c3a1ab61d2d5f0e96a587535ccbb1afe5d0d0bff7a98de08d39b41fa91847a14a31e51a8dbffea3198ba45fd5e90be75be38483fe2568ffc551708d5254475915919a4bb50a92e65aa8b9dea72a8ba60aa2ea9aa8baeeab2acba70ab2eedaa8bbf7ae541bd02a25e8951af08a957a6d42b64ea953af58aa17a4d54bd76a95e2356af55ef0dd2b7c5f707e947a5ea76b87a34a0e251ddbeff2c4c3f0cd3e761fa51987e1ca69f84e9a761fa59987e1ea4873056c31dabe192d5d0ca6ac865353cb31aca590d05ad8688fe63901e7a5a0d5dfd97203dfcf59761fa2a480fc1fd4d901e7efd6f61fa364c7f0fd33fc2f4cf30fd2ba81b4a1b1b8bd3740ba3af5282a1b5b5c3c78cab2dadad291d336974eda871a31f2d9d3caa766469cdc3c3278c185d331917fe5c2f2ce380f79b3061e8a3a5a3c6560f7fa4b466526d69cd88d2aa9a4963ab0f3950ff532f74c6e11e875657473bfbf7ef43fa7f1ae8b4b56efb6484f5eb32d7ada879030439ae210b756ddeb00a3da68f5272397b47fa5cb774e2e89adad2b2d2b1e1dff0e05a33797875c752fcdfc450e489b5a5136b874ea82d1d31a1664c69a78eb8de29c736a01205093730ed4e6b983825fa5b4a0d0ab1bd673740812fce6e18e97ffb3ea4ffa3814e5b9536a0866d1ab2507969c3082b4b23659938a9aa76c2d061b5d10bf7fb3e0b5fd3906aded5c06ab668df006789862c7451fb86115ed31067e3b37016fc7f2c09ce921c4f06009b2d6c6f00000027c81f8b08000000000000ffed9d77701cc795c6679118164b10cc99902c538ce06291c104e64c9992ac1c98409116495024942ccb922cc939e76c399de59cf359ce392739e7ecf2d5dd3f57bebaab725df76c3fe34373668d5dcd03df60df543d6ccfdbde79bffee64dcf6cf7ec201314973f1bcbb872adb1c705e72ef47ebf7bcd3fb6a52dc16de539393329e1ac4909676d4a38eb52c2599f12ce8694704e4809e7c494704e4a9033037c5cbc9353c69b4d196f63908ebccda584734a4a389b52c23935259ccd29e19c9612cee929e19c9112ce9929e19c9512ced929e19c9312ceb929e19c9712cef929e15c9012ce8529e15c9412cec529e16c4909e70529e1bc3041ce15c04963e417b9d7c7bbd725eef562f7bad4bd2e73afcb5d1bebdcbadde64a63ab8cb57aefadb6ccc6ec6079c17bafdd5887b14e635deebd16f75eb7b11e63bdc6fa8cad31b6d6d83a63eb8d6d709a6c34b6c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd825c69e606cbfb14b8d5d66ec72634f347685c772a5b1ab8c5d6dec1a63d71abbced8f5c66e3076a3b103c60e1a3b64ecb0b123c6068c1d357693b163c68e1b7b92b19b8d9d3076d2d8296383c64e1bbbc5d81963678d0d19bbd5d86d9e66b71bbbc3d89dc69eec71de65ec29c6ee36f65463f718bbd7d87dc69e66ec7e630f187bd0d8d38d3dc3d8338d3dcbd8b38d3dc7d8738d3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab1d0b1d08af31f65a63af33f67a636f30f690b1371a7b93b1371b7b8bb1b71afb37636f33f6b0b1b71b7b87b1771a7b97b1771b7b8fb1f71a7b9fb1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb77639f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb92b12f1bfb8ab1af1afb9aa7f9d78d7dc3d8378d7dcbf9beed5ebfe3ead231ff5df7fa3df7fa7df7fa03f7fa43affea3defa8fbcf51fbbd79fb8d79fbad79fb9d79fbbd75fb8d75fbad75fb9d75fbbd7dfb8d7dfbad7dfb9d7dfbbd73fb8d73fbad73fb9573bafd63eb3589e180c2ffd41427d52c740af1d5727b1fd793b3b2754ebdea3d716e7af73ebf49a71fe7ab75eeff91bdc7a83b79d896e7da2e79fe2d6a778fea96e7daae79fe6d6a779fe196e7d86e7bfc0ad5f00feac7bafd8b0e28bf5d53a57067c949f35e0ab77be5af035d0e6c037c1f9eac147fbb7017c939c6f02f8263bdf44f0659d6f126969acd1f9fa83a472257fd06e3797f476dd5cc494e4790fd9ed3631f14e4d9ef7b0dd6e3303afcd8f696e5b39c89be9ce37057c339caf097cae0bfae731677db39caf197cb39d6f1af8e638df74f0cd75be19e09be77c33c137dff966816f81f3cd06df42e79b03be45ce37177c8b9d6f1ef85a9c6f3ef82e70be05e0bbd0f916828ffacb45e0bbc8f916838faeed5ac047d77917808faef92e743edb4f4ccc403ce7a73e2a8c47fd33f81e4f7d33f89650bf0cbe8ba94f06df52884dbe65d0af906fb9f3511f65dfeb73e5fe20a963a2101ec36b92deaed9b2ddeebae4b71bce81ad0f86b5ee87386b40ab0dae9ce0fd216d189bae63280ef9eba0bc13ea523dd283ce33c46ecf276b5d794389cff5799fcb419db511edef0f926dff3a8f679dc75c0fed67cad9a39ab3a35ecaced92ba1ae9f7b74cd331e73760f70249fb3eded9ab3a35ecaced901a8ebe71e5df78ec79cbd06381872b69b27670b79cdd9e238581044e71e7df7198f397b0c3892cfd94ecdd9d12f65e7ec7d50d7cf3dfafe3b1e73f636e0483e67bbbbf5da60d44bd939fb02a8ebe71e8dc58cc79c7d00381872f690f6b3a35ecaced9d7415d3ff7685c703ce6ec8b8123f99ced65cad976cdd9a038a71904d1b94763d4e331671f028ee473f6b08ecf8e7e293b673f0e75fddca3f992f198b3ef71653bcff06d37cfb0007cdf71be85c09b7c6e1f6963caed36cdede2bd1e41109da33477371e73fb1157b679fc3db8f7807cdfa7fb12c0f703e7bb107c3ff4eed9603a06baf418187d9bca3d067e0675fd5ca679e4f1780c7c07381872b65b7376f46d2a3767ff0275fddca37b1ac663cefe12381872b6477376f46d2a3767ff0e75fddc5beacae33167ffe6caf67ae127ee7a6139f87eea7c2bc0f733e75b09be9f3bdf2af0fdc2f95ac1f74be75b0dbe5f395f1e7cbf76be36f0fdc6f90ae0fbadf3b583ef77ced701bedf3b5f27f8fee07c5de0fba3f37583ef4fced703be3f3b5faff3d9f92ebaf7ea4bce67f72d69d41f24bb6fe91e4bda36adaf1c83d84d5eeca6318cddecc56e8e88bd8a21761662d092f1d6fba1bc8a97279f031e8cb53af958edb6edadc1e8dbbe1a78f20c6dcf428cd1f0e481a72d799ef0fc59487ebbe13e6ef534cd42ac5668573b43bb32108bb64deb142f073eecbfdb23183b92672c6420166d9bd63b80917c783ea1f33a1d3ff67cb82433cccb702c85d744148f9eff441cabc14f751e9d31ccb6dcb135c2fb786e6df37c4c7919e605c5a26dd33ac56b84f6b48d3d6361b48c798f91ab8fc8402cdab61f1b8ff75563afd9a8f66b0e7ce7a14f2a54da273502db585ca7c4ed6b29b139ce571988417d1b695e003fd599e57e9060fbb6edd0ef321c7f8572afdfb03f483e8f0b793cae47c3d30e3c1cc73ed3f19ac7f3fe3f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fc26d55b2984917c05e0e118e70f9f01e5b645dbb7f33a3f86799de4e72d0a799cb3a47b0c97796dae833a7fcd0cd7fd39cca7fb738338a7b99257bb51dd67d1189c3b17cb398718370f1c357fd99258ecc261aef936fb0c15fb1cb2564fd795119a32dca73242d38ca729dea7b8c2e3b1793ab776988d63eeafdcb948d48aca49ceede13d06bcfba5d87f502ed40423fb0f3ccf74251e7be41c26cd977779b1eba0ceff6486f70ddd8b4affebcebfe7c9d6e9f6b64d9f5906fe6e6fdb4deeb3c451ef6dbf153e4b75fe0ffad4d7d704ffd48ce3fe0fec9703682b2efd50c679f3e4cfc3c579fcf632783a8187a39f61badec8e33190f43c7eb7a755d4750cd5e902fdba19f48bba16a5758aa7cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccf299f1b7a2c49a857a05218c6374ef43389f41cf7fa1eddb799de7d60cc7e59e87a339a7e55e9beba0ce376b86ebbed0951b8373ef7788db970cf37925f725c56b84f6e05c10d7efb93b3c9e8e082da8dc9258ece23c7ef21a0fcfe3b77bba162234e53a5e718e1535c5e3b5cde3c1b9d1c6e0dc7b4bb2b09db1b877282e2f281e1e4b1de0a332fe3e9a633fe3b9c4bfaf87e2e1fcf5c34edba6806bdf17f29cfd460fb4a93f3837bfeba0cebba1ef7baf2be33d1c78efc82311efd3526a9e9af46379965dbe38efbb0638fb210ec65e0bac09c56ec3d819671487fc7550fe54cd705daa477a90d6c46e8f117a2618b2fb9f6bf33e97833abd11edef0f926d7f9fc7d3e731db7df201c8b347e0fccfd527f5c668b40c34a23a781dc475eef4efaff4ef2bc47eb4c1ab439fad833a5f823e2aeefed1a87300f7798cb61d751ef3cf0ba3b9cfb3daefd37a14fa8ba4efd37a147208efd30abced2f87ed135743107f6ea13a3ff5b6ef5f93d367f03e30aaf30be82f9adc3d8b8dc1b9d7df78cfd4587cbf8abb4f9ae2e1750dbd379ab65be61ea8df9f2033e604b2e07502d5f993b7cfba63b857477cf6af319f25ad56b9327e7ff1f5b33af4c267fa13d1a178ccf7796da1bcee85b6509dfff2ae0193bf6e295e0326dfd691d724d40f7444b495eafc371c6b7f876b3cda4ff8bda3a1f6dcf76929750d48fad9368ff5f38131b684e703d7d70ed7f59ff34b5a97fb7ce02eef73129f0ffcbf90670d701f3a575fbd3646a3e5a011d5c1df06d179049fe51b35d671bebe4fe3b514f6cf4da029d7ef0efcf39f3fae16758db0dcd318af116638e626a7b35fd71f2fa4f36592f70de36f255a212efe56a29549cf3ce8d60feb785d703e63e79962c73d733a3f06b1e39e393d16b19bbdd8cd63185b3557cd2569cef04ce4f0f767f8cc52bb94ba2e25861c7cae26058cb52960ac4b01637d0a181b52c03821058c1353c03829058c9353c09805c6f3796e67d0a750a93e5cfbabd4b506c65ec5a44539ffbf83f97fa994bcf6c1d80cdfe9422d5605a3d702bfe7713cfba1dcfff5420cf8bf0ba6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a185b52c078410a182f4c01e3e352c078510a181f9f02c625ca9808e30a5ec642a58c9687e37ffe3d96ff39c6c0938fbae794e9fed9b2ffdf1af3f349db2a7d6e1cde5bc2fb3fe11edbb3ed38ee1d29f7d976a5fedf2a1363a15246ae7b81f0bea3d1f044dd1fd4c6cb58a89491ebf72ff81bbdd1f07481669d119a3130162a65e4ba57aedc7b39f19efeae08cd18180b9532e27dd509f2849a7597c1d3039a754768c6c058a89491ebbee42cc4180d4f2f68d613a1190363a15246a6dfb6859af596c183bf01eb8dd08c81b15029a3e559c3a4595f193c6b40b3be08cd2431224fd2cfc9ee8b88c5f19bc172db4e0cc83829058c9353c088f74970f45fa5ee93e8e3d5a750a93e5cfbabd47d12189be1f731a116f87b887fa5c53a5e9e92f74960ecf54c5ae0ef55fe9516eb8187e3f7335988311a1e62c8c1e7a6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a18f1bb2ac3b562c9ef2febc779ecb8ef2ae33d76dcf792f11e5bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73c97143b0d63fcca38fe1891a725399e3cb61d63f50b687b7f044f86a9ed186ba380b61343da1837a480714d0a1855c7e23d8895305a9e4d4c3c1bcbe0d9043c9b99783695c1b31978b624cf13e6d4e632788821079f5b9302c60d2960541d5547498caa63f5e8a88ccaa88cca783e18d3d0872b632af2b15029a3e5d99a3c4fa8d9963278b68266f4b9b61430f6a78071032f63a15246cbb32d799e50b3ad65f06c03cde8736dbc8c854a192dcff6e47942cdb695c1b31d34db16a1190363a15246cbb323799e50b3ed65f0ec00cdb64768c6c058a894d1f2ec4c9e27d46c47193c3b41b31d119a3130162a65b43cbb92e70935db5906cf2ed06c6784660c8c854a192dcfeee47942cd7695c1b31b34db15a1190363a15246cbb327799e50b3dd65f0ec01cd764768c6c058a894d1f2ec4d9e27d46c4f193c7b41b33d119a49655c9302c60d296064d6b15029a3e5d9c7c4b3b70c9e7dc0730913cfbe32782e019e2724cf13e6d42565f010430e3eb726058c1b52c0a83aaa8e921855c7ead15119955119cb63ec4f01a3ee6b6594cac8f0fdaae46f912e19e7b19bbcd84d55123beeb748e33db6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae792e29f6fee46317ca7dc6cc7ee0e178e60d533bf376bb97ba6dfd2341fdac5697795a5de26995833a97827e9731e89781b8b46d5aa778e5325f2c80992976618ad9c624683fc5d8e0e961e35fced4f6b8befef2711e3baeaf1fefb1e3fafaf11e5bf35cf3bc1a626b9e6b9e57436ccd73cd7329b1b15c1f0c5fb7d3f34fed369ee8ca756e1d59c94f75ae9a507c6d0af418e288adc7909e2baa21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad792e2fcf311f6ac68027f07882123cfb84f12c12c6334718cf34613ceb85f14c12c6b34c184fad309e9dc278b609e3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67a3309ec9c278ea84f1e485f12c11c6334f18cf58fc9ea11c9e19c2785608e3c90ae3d9248ca75e18cf6a613cbb84f1f409e3d92e8c67a9309e5e613c5dc278da85f16c11c6d32a8c67be309e99c2781a85f1e484f13408e359258c678f309eb5c2781608e399258c678a309e26613c1384f1ec15c6b35b18cf3a613c3b84f16c15c6d32d8c67b3309e0e613c2b85f12c14c6335b18cf54613ccdc278260ae3c908e0c906e73e932c0befef075f8df7597bbd3477e6f0fb57387f0d7ce64a57ae8dd8f615e0a3df865f19f159d4e90a684bbf2be71fdb12ea84b1fa619de23502c7954278260ae36916c6335518cf6c613c0b85f1ac14c6d3218c67b3309e6e613c5b85f1ec10c6b34e18cf6e613c7b85f14c10c6d3248c678a309e59c2781608e3592b8c678f309e55c2781a84f1e484f1340ae399298c67be309e56613c5b84f1b40be3e912c6d32b8c67a9309eedc278fa84f1ec12c6b35a184fbd309e4dc278b2c2785608e399218c67bf309e79c2789608e3c90be3a913c6335918cf46613cd385f1cc15c6b35c18cf62613c05613c9dc2787a84f16c13c6b353184fad309e65c2782609e3592f8c679a309e39c2781609e3d9278ca7268287e1ff5f863c74ff1a6d9bd6f70b89cdb01fc2fffb7915539bae76dbaa77db257e8a5707750eb98ed4ce4fe36789cbbfdf10bf9b5f0d1a5dcdd416da1f196fff70c7c6fb2a0360083c7d82081e8efb5199da39220f13fcffb379abd5359e56febecb419dab40bf6b18f48bca6d5abf0678e83c4eac59a8b75e0823f92e67e6c9429b6929750c5c033c1cc724533bc35cbdd66bd3fa08dda90ee6eab50ced8c3a7668fd5ae0d9e8cac49a857a1b853092ef6a669e2cb4999652b97a2df0701c3b4ced0c73f53aaf4d1b2374a73a98abd731b433ead8a1f5eb8067932b136b16ea6d12c248be6b78793ab2d0665a4ae5ea75c0c371ec30b533ccd5ebbd366d8ad09dea60ae5ecfd0cea86387d6af87fda0ccca1cc56c79e87704c49a857a9b853092ef5a569e8e7c16da4c4ba97eec7ae0e1e8e799740ffbb11bbc366d8ed09dea60aedec0d0cea86387d66f8888dd1224abc58da3d0e2c6089e1bc7580b8a572ef3552964569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a1e778126b16ea6d11c248beeb7879c2df056d09462e196fbd1fca3702cff50cfa30b533bc87fc80d7a62d11ba531d3cbe0e30b433ead8a1f503b01f0e94c17c430a9955e7ca982d0ffdff0c62cd42bdad4218c9773d2f4fd88f6d0d462ea5fab103c0c3d1cf33b533ecc70e7a6dda1aa13bd5c1e3eb20433ba38e1d5aa778caaccc71cc96879ecb46ac59a8b74d0823f96e64e52984bf6fdc168c5c4af5630781e740e23cc57e8c41f7b01f3be4b5695b84ee540773f510433ba38e1d5a3f04fba11ce61b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73f5e86c79e8ff5f126b16ea6d17c248be03ac3cede1bcc3f660e492f1d6fba17c08780e26ce539c7760d03d9c7738ecb5697b84ee54078fafc30ced8c3a7668fd30ec87f1ce7c430a993537c68659734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426e589e1dae4cac59a8b7430823f90ef2f284cf3dd8118c5c4addb77318780e31e8c3d4cef0be9d235e9b7644e84e75f0f83ac2d0cea86387d68fc07e5066658e62b63c3b5d9958b3506fa71046f21de2e509fbb19dc1c8a5543f76047838fa79a67686fdd880d7a69d11ba531dccd5018676461d3bb43e00fb419995398ad9f2ec726562cd42bd5d4218c977989727ecc77605239752fdd800f070f4f34ced0cfbb1a35e9b7645e84e7530578f32b433ead8a1f5a3b01f945999a3982dcf6e5726d62cd4db2d84917c479879b2d0665a4af563478187a39f676a67d88fdde4b5697784ee540773f5268676461d3bb47e13f0ec716562cd42bd3d4218c937c0cc938536d3522a576f021e8e6387a99d61ae1ef3dab4274277aa83b97a8ca19d51c70ead1f039ebdae4cac59a8b7570823f98e32f364a1cdb494cad563c0c371ec30b533ccd5e35e9bf646e84e7530578f33b433ead8a1f5e3c0b3cf9589350bf5f60961241ff663fb9878721e4f2e428bf118bbc98bdd5425b19bbdd8cd55125bf35cf3bc1a626b9e6b9e0755105bf35cf3bc1a62576baea9e6d5a979e63c6a9e398f9a675473919aff23b9d89dd8afd4402c86f1b9b6d18c3922cf22613cfb85f1cc11c6334d18cf24613ccb84f1d40ae3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67b2309e3a613c79613c4b84f1cc13c6334318cf0a613c59613cf5c278560be3e913c6b354184faf309e2e613cedc2785a85f1cc17c63353184fa3309e9c309e06613cab84f1ac15c6b34018cf2c613c5384f13409e399208c679d309e6e613c1dc278560ae359288c67b6309ea9c2789a85f14c14c69311c0930dcefd6d07fe9ea0167c747fff3ef03dc995f783af2622066de738f868fc94b661cf5717cd3c97a1063e737304d79322e2519c9b233e3b16ba63ac7e58a7788dc071b3109e89c2789a85f14c15c6335b18cf42613c2b85f17408e3e916c6b34e18cf04613c4dc278a608e399258c6781309eb5c2785609e36910c69313c6d3288c67a6309ef9c2785a85f1b40be3e912c6d32b8c67a9309e3e613cab85f1d40be3c90ae359218c6786309e79c2789608e3c90be3a913c6335918cf74613c7385f12c17c6b358184f41184fa7309e1e613cb5c2789609e399248c679a309e39c278f60be359248ca72682673f134fdcf314f60b886dd7f3a08b5db2f0fe58fc2e68bfc748ebc78011798927cfc413f70c8abc80d8b6fd347640732859781f7fd7c19553798f91d6a3720aef6b5ccdc413f7dc8ed502625b2d68ae82ee01c8c2fb781f33574eadf618693d2aa79a7979c2ff1fb02a18b994bad7088f398e7dc8d4ce3c1e7f093e4323f219c9ab3cadf019aa63f11c89b8fe80e229b332c7315b1e9a6b22563c9f8dc5efa846c318757e65e009fbc7d660e452aa7f3c063c1ce70fa67686fdd809af4dad11ba531dccd5130ced8c3a7668fd4444ec9620592d4e8e428b93113c27c7580b8a572ef3fe14324bd0d9f2ac746562cd42bd954218c997e7e509fbc795c1c8a554ff78127838ce1f4ced0cfb84535e9b5646e84e75f0f83ac5d0cea86387d64fc17e2887f9440a9955e7ca982d0fcd89106b16ea15843092ef182b4f219f8536d352aa1f3b053c1cfd3c93ee613f36e8b5a910a13bd5c1e36b90a19d51c70ead0fc27e5066655666655666655666655666655666655666655666655666655666655666d9cc96877e3b4cac59a8d72e84917c2759798af30eedc1c8a5d4bcc320f070cccb30e91ece3b9cf6dad41ea13bd5c15c3dcdd0cea86387d64fc37e5066655666655666655666655666655666655666655666655666655666655666d9cc96879ed94eac59a8d72184917ca77879c2df6d7504239752f30ea78187635e86a99de1bcc32d5e9b3a2274a73a98abb730b433ead8a1f55b603f28b33247315b1e7a761cb166a15ea71046f20db2f214e74f3b83914ba97eec16e0e1e8e799740ffbb1335e9b3a2374a73a98ab6718da1975ecd0fa19d80fe5309f4821b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abced5a3b3e5a1ffb148ac59a8d72584917ca75979dac37987ae60e4526adee10cf070cccb30e91ece3b9cf5dad415a13bd5c1e3eb2c433ba38e1d5a3f0bfb61bc339f4821b3e6c6d8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbd3edcac49a857add4218c9770b2f4ff8dc83ee60e452eabe9db3c07386411fa67686f7ed0c796dea8ed09deae0f135c4d0cea86387d687603f28b33247315b9e1e5726d62cd4eb11c248be33cc3c5968332da5fab121e0e1e8e799da19f663b77a6dea89d09dea60aedecad0cea86387d66f059e5e5726d62cd4eb15c2483e3cc7f532f1e43c9e5c8416e72bb65def73e546f79a85f7fb8091ab6fe9f518691d731c7989a78f89a7c9e3698ad0e27cc5b6ed5febca53dc6b16de5f0b8c5c39d5e731d27a544e3501cf5a269e668fa739428bf315db6ab1ce95a7bad72cbcbf0e18b9726aadc748eb5139d50c3ceb9878e2faa47563103beef81a8bd871b93216b15573d55c3557cd3935cf9c47cd33e751f38c6a2e4a7386eba870ec946204c0804b3f94f1bb02c7b527533bf351dfc7d6796dc2ef6338e670bebe6f28b332c731338d5b7464bdd8a44fe0f1d032c4acc5588e41f6796d923606592ef3891432abce9531dbd8b7251fbb23ebc5267d028f8796db98b5606a67d81fdc1e446b4cf1725007f3f476867666202e6d9bd66f87fd500ef3891432abce9531dbd877241ebbf86c768c4dfa041e0f2d77306bc1d3ce627f706710ad31c5cb411dccd33b19da9981b8b46d5abf13f683322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9c78ece2f83dc6267d028f879627336bc1d3cee2f8fd5d41b4c6142f0775709fdfc5d0ce0cc4a56dd3fa5db01f945999955999955999955999955999955999955999955999955999955999955936b38dfd94e46387bfc7c1d8a44fe0f1d0f214662d98da198edfdf1d446b4cf1725007f7f9dd0cedcc405cda36addf0dfb419995398ad9c67e6ae2b18bf379189bf4093c1e5a9ecaac054f3b8bfdc13d41b4c6142f0775709fdfc3d0ce0cc4a56dd3fa3db01fca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569dab47671bfbdec463b787e3f7189bf4093c1e5aee65d682a79dc5f1fbfb82688d295e0eea609edec7d0ce0cc4a56dd33ac5ab06e6132964d6dc181b66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f2df9d8e1efd93136e913783cb43c8d590ba67686f7bfdc1f446b4cf1725007f3f47e867666202e6d9bd6ef87fda0ccca1cc56c633fc0103bebc5267d028f87960798b5606a67d81f3c18446b4cf1725007f7f9830cedcc405cda36ad3f08b151ef846287f740528c1af76a7d4f77e55af03dc395ebc0f74c57ae07dfb35cb9017ccf76e509e07b0eb4877ccf75e515e07b9e2baf03dff35d792df85ee0ca7de07ba12bf782ef45ae3c04be17bbf2ade07b892bdf06be97baf2ede07b992bdf01be97bbf29de07b852b3f197caf74e5bbc0f72a577e0af85eedca7783ef35aefc54f0bdd695ef01dfeb5cf95ef0bdde95ef03df1b5c7909f81e8af0bdd1959f06be37b9f2fde07bb32bef07df5b5c7912f8deeaca93c1f76f50a6d7b7b97223f81e76e51cf8deeeca53c0f70e576e02df3b5d792af8dee5cacde07bb72b4f03df7b5c793af8deebca33c0f73e579e09bef7bbf22cf07dc0956783ef83ae3c077c1f72e5b9e0fbb02bcf03df475c793ef83eeaca0bc0f731575e08be8fbbf222f07dc2951783ef93ae8cfbf7df5df901f051bff220f8a85f793af8a85f7906f8a85f7926f8a85f7916f8a85f7936f8a85f790ef828ef9e0b3ecabbe7818ff2eef9e0a3bc7b01f828ef5e083ecabb17818ff2eec5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828ef1e021fe5dd1bc14779f726f0b5b8f29bc177812bbf057c17baf25bc1f73857c67ee622577e1bf81eefca0f838ffac2b783ef62577e07f896baf23bc1b7cc95df05bee5aefc6ef0ad70e5f7806fa52bbf177cab5cf97de06b75e5f7836fb52b7f007c7957fe20f8da5cf943e02bb8f287c1d7eeca1f015f872b7f147c9daefc31f075b9f2c7c1d7edca9f005f8f2b7f127c741ea77ec61ecff6b8241d4823eba336b746b4857c13a12dfd41b2d774148bb64debedc048fba030f68c85d132b6798c96a7934133cc2b5a4a7dffe8049e0e061ea67686df3fbabc36b57b6dca419d8ba19d5d0cedcc405cda36ad77416c8e7d8e5ad4bbed2ef5b4a8833affe14e72f67c5a4a47da86cddf42445b7a99db42dba67ea9770c62777bb1f35e6cec8f6929757c7503730f03b3dd6e5ff2db0d8faf356e5b945314270f6d5a0b1a24d5268c9d714671c85f07e59a99c375a91ee941e72f62b7b94cfb12d9fdcf757a9fcb419dde88f6f707c9b6bfcfe3e9f398ed3ef9fb8c610e86e321cc815e8f83d6f3a05d5f8c76bda01dd5c1f35f1b93763d1e0fadb7010f5de374818fae15881fafb35ac780dbeff7ba22b8c9d70d8c6d118cf9e419c36b9d368f91d6f3c048be1ee0e966d2ccdfd74b3d7df0bcdce0d5a1cfd6419dd9ae2f690a467effa0baf6b85b92196e177d07ff47906c9fdec0a0178e0f04a04fe06918805ed4ce7a069ec9c1f018c1d9a1c133076f1ab874e0e0910ca0d57998f89a8968460df8b05c1be10b8291432138244b432138245be3c982433054df7e95b2cda2e1868193c7879e786ae0d4e133779e1e1a38b267f026a4aef7e89134ae05488a3e5a2606c38336fd41b2c9d3e0c52a953c13e17502030f533bc393de24af4d0d5e9b7250a71ede9bc4d0ce0cc4a56dd33a0e00930fb393dec709831aaf2d98c593e0d5dfb7893688023e0eb69f7170f6bd3a276c83832771a9c7b057717627d85142db53db51403bea670f3b3baa672f8c6c476e47e9eca89c1d85b3a36e7694cd8eaad951343b6a6647c9eca8584b501cf5ba1078be048c7654cb8e62d9512bfb4dd29e15ec28941d75b2a34cf66ac27e4bb167607bc569cf86f62c68af76ecb729fbcdda9e61ecd9db9e99ecd9c45e1dd9ab227b156bafeaeccccc7a631b9cd61b8d6d32b6d9d816635b8d6d33b6ddd80e633b8ded32b6dbd81e637b8ded337689b12704c511e54b8d5d66ec72634f347685b12b8d5d65ec6a63d718bbd6d875c6ae377683b11b8d1d3076d0d82163878d1d313660eca8b19b8c1d3376dcd8938cdd1c14eff03869ec94b14163a78ddd62ec8cb1b3417196c8ce0ad959203beb636779ecac8e9dc5b1b3367696c6cecad859183beb726f509c55b1b3237636c48e84db916f3bd26d47b69f191447aeed48f57382e248b41d79b623cd7664d98e24db91633b526c4786ed48b01df9b523bd7664d78ee4da915b3b526b4766ed48ac1d79b523ad7664f5a1a038726a474aedc8a81d09b5239f76a4d38e6c3e1c14472eed48a51d99b4239176e4d18e34da91453b9268470eed48a11d19b4238176e4cf8ef4d9913d3b926747eeec489d1d99b323719f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f06c59cfcb2b1af18fbaab1af19fbbab16f18fba6b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b1478dfdc8d88f8dfdc4d84f8dfdccd8cf8dfdc2d82f8dfdcad8af8dfdc6d86f8dfdced8ef8dfdc1d81f8dfdc9d89f83e1517bec28feee566804f9e0d0d0c0c9d3432d43832d276f3d3174fcf4893b5b6e3f3e74ac65f0b68133474f0cde8e1f7e9beb9a68787ce3993307ef6c397eeac8c01d2d83b70eb50c1e6d393478eba92367f1435f741f5a706ec483478ec407fb61cd6320fd498541ffe83e47130f3b4bb7ed2f9508f29f957c687a6d650dbad29d59e85be965c5abb896b32706875af22da7ccdf8327cc67068eb4b6e07b678dc867875ace0e1d3c33d472f4cce0c996b656dceec1491534e26f332af8d0ac99a36f79f0ffaa88c27fb1020400", "privateFunctions": [ { "selector": { @@ -37,8 +37,8 @@ exports[`ContractClass creates a contract class from a contract compilation arti "isInternal": false } ], - "id": "0x22e7e77e9446ca4603b617d779dfe30424e8b6d844a6131396a576f67573274e", + "id": "0x2f406cdbb6fa7c3032f88fc8642750bcf3fad8215e9205159ac6ad4270dd1ec6", "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x0c8d754dd68d3cc51606ffd0e1344ca53d601efb48783e5f8ace9980badd4369" + "publicBytecodeCommitment": "0x229f2e39e5a39d3d7c17cfe438f771f0120c8a4713d5b5e2af3ce2e799ff3811" }" `; From 14cf439313afcf0e7a44bf2070ede412457d4507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Fri, 22 Mar 2024 04:29:04 +0000 Subject: [PATCH 33/36] make it stop --- .../contract/__snapshots__/contract_class.test.ts.snap | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 e64435e3d21..0e4618e6a8d 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": "0x1f8b08000000000000ffed9d777414c7dae65b2030782404ced9c2e13a60632144163038e78c8d31c62004061b104118e76c72748e6072ce064c30068cb1af6fced9e95edfb0e7ec7e7b76ffd8ef3bbbebddae997a3f3d14d58346ee1a1e69aacf294df5abea7e7ff5f4dbd5a9baab20484fff0a5381ce370fd379c1e193fc3fa97fcbbedfd429c67595b9e42c68249ccd1a0967f346c259d848385b3412ce968d84f39846c2d9aa9170b68e91b300f85cf11edbc878138d8cb728681c715bdc4838db3412ce9246c2d9b69170b66b249cc73512cee31b09e7098d84f3c446c2795223e13cb991709ed248384f6d249ca73512ced31b09e7198d84f3cc46c2795623e13cbb9170963612cef68d84f39c46c2796e8c9c1d8053eee59faf7f7fa07f2fd0bf17eadf8bf4efc5fab783ae63a19ebf244c9786a963982e33fea7845137f4cbc3d4d9f85f4598ba84a96b98bae9ff95eaff750f538f30f50c53af305586a97798fa84a9afd6a35f982e0fd31561ba324c5785e9ea305d13a66bc3745d98ae0fd30d61ba314c3785e9e630dd12a65bc3745b986e0fd31d61ba334cfdc3745798ee36580684e99e300d0cd3bd611a14a6fbc234384cf7876948988686a92a4cc3c2541da6e1611a11a607c234324ca3c2f460981e0ad3e8308d09d3d830d584695c98c6876942982686a9364c93c2f47098261b9a3d12a647c3f458981e37389f08d393617a2a4c4f87e999303d1ba6e7c2f47c985e08d38b619a12a6a9619a16a6e9619a11a699619a15a6d9619a13a6b9619a17a6f9617a294c2f87e99530bd1aa6d7c2f47a98de08d39b617a2b4c6f6b16d911de09d3bb615a10a685617a2f4c8bc2b4384c4bc2b4344ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2b4394c5bc2f47e98b686695b98b687e98330ed08d3ce30ed0ad3ee307d18a63d61fa284c7bc3b42f4cfbc3f471980e84e993301d0cd3a761fa2c4c3f0cd3e761fa91a1f98fc3f49330fd344c3fd3b69febdf5fe8b2b2cfff52fffe4afffe5afffe46fffed628ff3b63fef7c6fc1ff4ef1ff5ef9ff4ef9ff5ef5ff4ef17faf74bfdfb95fefd5aff7ea37fffaa7fffa67fbfd5bf7fd7bfffd0bfffd4bfeaf9dfdbedd3f95641dd940c626a932a860f55f7ff456cf3f9a27a76d55cff4f7e4bb5bd50cfcb6f81b6b7d0f32d0c7b4b3ddfd2584f2b3ddfcab0b7d1f36d0c7b5b3ddfd6b01fa7e78f33ec27e8f9130c7b7b3ddf1eec09fdbf74c5d23fcad65c9b0ac026f1d90c6c2db4ad39d85acaeac0768cb6b5009b6cdf96606bad6dc780ed586d6b05b684b6b5162dc354a46dc920ae58291baad65b1cf77af5339336f1f356a9f59638e26d1b3fef30b5de760e78557c1ca7d7550c7173bcb6b501db09da5602b613b5ad2dd84ed2b676603b59db8e03db29da763cd84ed5b613c0769ab69d08b6d3b5ed24b09da16d2783ed4c6d3b056c6769dba9603b5bdb4e035ba9b69d0e36dde4066780ed1c6d3b136ce76adb59603b4fdbce069b9ce395824dcef7da834dcefdce019b9c079eab6daaed685d00feb45ddaad943f69b3c1f60369afc17681b4d560bb50da69b05d04bec57631b43562eba06dd26ea9fff5d4f96410d77e529eda4f7ac5bdde70cd6abdbde35f6feaf95d9fa04eeb24f8e9055af5d5f918fbb67442df726e237ec45e08f9eba1ac94133de4d823ecea1853a9f37d332cd7d358ae18ca545aea9f0ce2ad7f6f83a7b7c1dc02f26e62b673998fd97a4f59c7ec00286bc69e9c0735c598bd09381cc46c858fd97a4f59c7ec08286bc69e9c0b37c598bd17381cc46c7737315b5ee663367d6f2c08ecb127d7434d3166470147fc31dbc5c76cfda7ac63f639286bc69e5c1337c5989d0c1cf1c76cb7eefedca0de53d6313b0fca9ab127f7679a62ccbe081c0e6276986f67eb3d651db30ba0ac197b72afb029c6eccbc0117fccf67014b39d7dcc06e9e79c41608f3db96fdd1463761170c41fb3c3fcfdd9fa4f59c7ec4e286bc69e3c43698a31bb41e7d573869febe70c6780ed17da7626f0c61fdbd5e58e62bb938fed74ff8f20b0c7a83ccf6b8ab1fd91ceab38fe15f44710dbafa5af02d87ea36de780edb7da762ed4cbc13ed0cdef03f5af53b6fbc09fa1ac19cbf26cb929ee03bf000e0731dbddc76cfdeb946dccfe17286bc69ef473688a31fb25703888d91e3e66eb5fa76c63f6dfa1ac197b17ea7c538cd9ffaaf3ea7ce18ffa7ce162b0fd49db3a80edcfda7609d8fea26d9782ed0b6deb08b62fb5ed32b07da56d6560fb5adb3a81ed1b6d2b07db5fb5ad33d8fea66d1560fb56dbba80edefdad6156cffd0b66e60fba7b67507dbbfb4ad87b6a9e75dd2f7eaa0b6b502fe6410efb6957e97b26e99ef9403df2586ef921cfa6e67f86e67f15deec077027cc85460cc27215fee96a7ac1878d05745fcbe3aabba770eea5ff70ae0e9e2a0ee09f0511f9e2ec0d3357e9ed4f1b35bfceb4d6de3ce86a609f0d519ead5dd41bd0ac097ac5be6c55f31d8b06ded6e61ec113f637901f89275cb7c0f60141bb6f5f22e95ec3fea787841411daf837d29754e24fee4db55c251017629d3a97d1d5b07cd5604ffc7e35e57c3e6282e537121be64dd322ffe8aa03e5d73cf585e5fc62e06a3ab36a2007cc9babdefbaed20793c8ebbb8d6b1b569e2bb570e7cf7307c5718beb1ed9429d3b1ad0730c77ecda98f6d95f1afb70caf4fe4da50fce0f9035ec3c55527f42dd786e247ec8590bfb9a0aeac94133da41d167615cbb22d91dd5caebbb15c3194e965a97f3288b7fe95064fa5c1acb6c915702c74b03fa462a097c121f315a05d658476bd403b29732168e7aa3deb69f0c87c57e09176ac1bf0b8ba268ae2c9c5f5d8917ce3392c5e3fcbfff13cc0d5f6ea6430cabc6d7bf50046dbb98a83eb998ce72a5d80516c3d81a7b323cda2b66b6712df0e6225d51e890f393797fdb72bd8a54c0ffd429d6a2b1f84b6d2458c603cca54df6bdef8b75379ea1abc4b163cb8ed1c5c577572148f6578ffe6bb20de5833dba52e865651f7785cb5e59d0d1e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f17912f6db92725d4918cdfe6faeeef3a7be61a8d725eb57cf75feb7d3fe60e565d83f46fa415c6cd4b910ca1437ab2bfbffa03f98f99c0afb487675ab5d6a5b627fcc24cc8b3fec6b85db92a1bf53696cbed3dfa274f1bc4d7d034c7d47d3ecfbd9d5a2a98bfecfa86981a129f6c7bfc4e051715ad9bc8ecdc5b3bf6c9f45a256928ff3d95e71608ff5f8b74bf921cfac9b0587b61f789c71d57f47da6a795edecbf05d08654e6f56b76da46f958c33dbd9580efbfdc8ba65998bc15e69acbb442f2b1c2d8cf5778365a5cc59d0a6ee6b56a79983b6b23cdbbeebf8dc3cfee370fa397ee72c783a018f8b76c6d1f9c621df5b8dfb39bed93fcd761e2365b06f9f837e9519fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd7569030e6a8ef43ea79867cab4cd69ffa5e70b33abfae9fc3c933a70e469df1ddd1ffdeacaeec169d2f0a0eefef10b52d5d7d9f226a5b8a3ffcf60c3e0b72f15cb7007cc9bacb2d5a48be3436dfe5cec68690e7f89d0d5d2b2c9abada5ff1192b6a8afb6b1783079f8d467ddba7dcb0b9ec3b141517e20ff7a572b0491edf8f76b19df15862f6eb117ff8fcfa475adb92c0d5b62f2f73d96ee0775392c1e1f18ddf53f939b47dbfd479ecc3817d47beb6fc5fa64ccfa9453f556707dfd72c2b8075c9f6b57ddbb31fb0c6e4bb13aeab40a77e86068590ffaa595d59292765456b6157fb887c0306d9cde5ba18cb1543993e96fa278378eb6f7e6bb5afc1acb6c96f20cebe86e3bfab36a94f84461783465206cf835cf5c933db48b37f23f6db6b6994c1731629f32f68a3a2fa8fdafa1cba3a8e45f539b49d1b770246b38e663fcf7cefa7f51fd05ec4dd4feb3f2086b09f5660acbf03ac5fb85a06d1c71629f37f8df59be7e4b20cf603fbcffe4ff03d97729dcfe69cfc685d5fd9cec971b9a8ba2b66fc0e5a3246668c0964c1f3042973acd65ab6596504770fcbb2c511cb8a56e6b7c28a82c3f573f39db5f43edfd7a88bc4357e835cca1c0f757173de923e0774f54db924d449e5cb2d759532a7c0be769ace27603be17e7b91e5ff32653a07c431dc2f8fbfcea9ed7b057026c10ffabe125863f2dd097dcb39a0f8117b21e42f6c5e5756ca891ea2b5b0ab7d44cea390dd5cae97b15c3194e967a97f3288b7fe971b3c971bcc6a9b9c09717611f44377d556f78bd0a803682465f09ea2ed3ba0b6638cabbefd51c798726034db4d3c4eba6433df1332efabd9ce11a48c2c8be708dda09d4d58ca9af70be5781967bf617c57a21bf8c577255c7dbbb927e89684793c2f389abe5d7cc756f98b1a33a1670e7c478d99900bdfed0cdfed72e8db6bee3567d2dcc11804a9f7cff09ba56aca745e8ae312c872cd80d1c5580e89e0d06f8f1f8911c77790e59a03a38be343b6df3eef068cb25c2130ba78b714c7dfa80f237e63188ff3c2e8e05bb19d1afaad58bca7d7121899ded9c46753c700a38b7ba80d7d570fcfe75bc1afab71893a67c188e7f3b25c6b6074716f1c9f0dd68711af8b64b96381d1c533ac6cc777c26fcfe3bd65978c998eed8efba294677befa5d22d4fc6730df4ed605cc39416789ff1485af476cb93f1dc077d3bb8ef97d202c7193c9216f86cd0c5b88789e0d0e77047e2c1e797b2dc71c09874c4d8370bc62430fee7bd6260ece788319905633f6014fb09c0e8e0fe6b8ab15f168c789f52963b1118af70c47879168c5700a32c771230bab8979a00bff561bc121865b99381f12a478c5766c1781530ca72a700e3d58e18afca82f16a6094e54e05c66b1c315e9d05e335c028cb9d068cd73a62bc260bc66b8151963b1d18af73c4786d168cd701a32c7706305eef88f1ba2c18af074659ee4c60bcc111e3f55930de008cb2dc59c078a323c61bb260bc111865b9b381f126478c3766c1781330ca72a5c078b323c69bb260bc191865b9f6c0788b23c69bb360bc051865b97380f156478cb764c1782b30ca72e702e36d8e186fcd82f1366094e5ce03c6db1d31de9605e3edc028cb9d0f8c773862bc3d0bc63b805196fb0130dee988f18e2c18ef04c63b2c8cfd1d31de9905637f6094e52e01c6bbe2674c5d4bf7cf82f12ee0b93b7e9e94667765c173b75b9ed477f5eeb2f8ba277e5fa96d3120a87fddef019e81f1f3a4b6c53d59f00843312c879add1b3f634ab3815930de0b3c83e2e74969766f163c8340b37b2d9add173f634ab3415930de073c83e3e74969765f163c8341b3fb2c9add1f3f634ab3c15930de0f3c43e2e74969767f163c43823acdeeb76836347ec6946643b2601c0a3c55f1f3a4341b9a054f156836d4a2d9b0f819539a5565c1380c78aae3e74969362c0b9e6ad06c9845b3e1f133a634abce827138f08c889f27a5d9f02c78468066c32d9a3d103f634ab31159303e003c23e3e74969f640163c2341b3072c9a8d8a9f31a5d9c82c184701cf83f1f3a4341b9505cf83a0d9288b660f39627c300bc6872c3c717f27fb418baf318eea3e3aa87fdd85a11896c37e12631d318ec982712c30ca72d84fa2c611e3d82c186b8051964b3866ccd44fa2067c8f8bdf77aa5daa09eaafcf38b73c19fb49a0eff18eb41817d45f8bf16e7932f69340df131c69313ea8bf16138067a2032d12e0a33e3cc2500ccb613f895a478c13b360ac0546590efb494c72c4589b05e3246094e5b09fc4c38e182765c1f83030ca72d84f62b223c687b3609c0c8cb21cf69378c411e3e42c181f0146590efb493cea88f1912c181f0546590efb493ce688f1d12c181f0346590efb493cee88f1b12c181f0746590efb493ce188f1f12c189f0046590efb493ce988f1892c189f0446590efb493ce588f1c92c189f0246590efb493ced88f1a92c189f0646590efb493ce388f1e92c189f0146590efb493ceb88f1992c189f054659ee21c78c99ae5f9e6de2bea3ae559abaefa8eb92a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3fe7c077027cc85460cc27212f0cc5b0dc439eb14933224f697c3c655877f4f53c41dd9fb7f01438aa3bfa7a81a0eec2d0d8189f6b048c0f350246af63ba0f62431815cf8bf0ff648c3c2f64c1f322f04c71c4f362163c5380676afc3ca9989a92058f3014c3720f3502c6e71a01a3d7d1ebc8c4e875cc1f1d3da367f48c9ef16830368636dc33368a782c6f28a3e299163f4f4ab3a959f04c03cd64b9bb1b01e3f38d80f139b78ce50d65543cd3e3e74969362d0b9ee9a0992c77b75bc6f286322a9e19f1f3a4349b9e05cf0cd06cba4533078ce50d65543c33e3e7496936230b9e99a0d90c8b660e18cb1bcaa87866c5cf93d26c66163cb340b39916cd1c3096379451f1cc8e9f27a5d9ac2c78668366b32c9a39602c6f28a3e299133f4f4ab3d959f0cc01cd665b3473c058de5046c533377e9e946673b2e0990b9acdb168e680b1bca18c8a675efc3c29cde666c1330f349b6bd18c95f1a146c0f85c236074ac6379431915cf7c473cf3b2e0990f3c2f39e2999f05cf4bc0f372fc3ca9987a290b1e612886e51e6a048ccf350246afa3d79189d1eb983f3a7a46cfe819b3637cbe1130fa6ded1959191d5c5f657c17e9a526ee3bea5da4a6ee3bea5da4a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbf12bfeff26cbf31f30af0b8f8e68da37a96a9f5beaad7f55d8cfa29ad5e33b47ac9d0aa18cabc0afabde640bf02f02beb9679f1972df30504cc8e7c97b709d7d11aea2f3e9e33f450fe5f7754f7a8b6fef526ee3baaad6feabea3dafaa6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc537e65b0475e7edf2fd53b58e3774be50cf4bf9e7c12e651e3f26fd5b12f87dc8856fbf0ff963453ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c633c8ccf014f60f0041978a691f15493f10c20e3b9818ca72f19cf7c329e47c878ba93f18c26e3b99f8ce776329e67c978ae26e3799a8ca71319cf44329ee9643c23c8780692f1dc44c6d38f8ce731329e4bc978ba92f18c25e3194ac67327194f1919cf8b643cd792f1e4e2fda56c783a92f15492f14c22e39941c633928ce722329e41643c1792f1dc42c67305194f1b329e12329e0a329e27c878c691f10c23e3b98b8ce77a329e3e643cf3c8782693f1f420e39949c6f32019cf14329ec1643cb791f15c45c6733119cf53643ce5643ccdc9782690f10c27e3b9878ca70319cf8d643c49329e47c978ba91f1cc22e31943c633848ce70e329e17c878ae21e379868ca717194f2d19cf03643cf792f15c40c6733319cfe5643c45643cc5643c5dc8781e27e3994dc65343c633958ca78a8ca73f19cf75643cbdc978e692f13c4cc6d3938c671419cf7d643cb792f15c49c6731919cf93643c6dc978da91f17426e39943c65340c093080e1fc32401ff7f056ccd8c65d5675f6bdbd7fdff4d6d6f06cbbca5f3cd2deb7e136cf22dd9b72ccba24e6f425d923a5ff6fda6944ee82b09f3e2af0838de22e19943c6d3998ca71d194f5b329e27c9782e23e3b9928ce756329efbc8784691f1f424e379988c672e194f6f329eebc878fa93f15491f14c25e3a921e3994dc6f338194f17329e62329e22329ecbc9786e26e3b9808ce75e329e07c8786ac9787a91f13c43c6730d19cf0b643c7790f10c21e31943c6338b8ca71b19cfa3643c49329e1bc9783a90f1dc43c6339c8c6702194f73329e72329ea7c8782e26e3b98a8ce736329ec1643c53c8781e24e39949c6d3838c673219cf3c329e3e643cd793f1dc45c6338c8c671c19cf13643c15643c25643c6dc878ae20e3b9858ce742329e41643cf23d4f169e91643c33c8782691f15492f17424e379858ce75a329e17c978cac878ee24e3194ac633968ca72b19cfa5643c8f91f1f423e3b9898c672019cf08329ee9643c13c9783a91f13c4dc6733519cfb3643cb793f1dc4fc6339a8ca73b19cf23643cf3c978fa92f1dc40c633808ca79a8c671a19cf780bcf2b8e78e47d7759b7ccbf42e2dbc1762853eb7ddb519dded1eb6aa1d72bfce2af10ca4c3d36fdab9e0fe1b2c2657e9f00efc5bd031abde3a82eb23d0a8ced83bedf70e4dbfc5eb3ccbfd1c47d9718be4bf2c4773bc377bb3cf1ede3dcc7793ef8f671eee33c1f7cfb38f771cee4dbc1b541397e274da602633e0979bc5e70f17d3947f53ce43af1bb18f5535abd6b68655e5b154399b741bf771de867bbf69479f1972df30504cc1817a541bc71b120fe3a95ab7e99ad41d70586be58af858e348d3a862c6ce2bea38e214ddd77d431a4a9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fd9ecec778dd58863ed4f345b91e780ffc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732cd12e9df92c0eff32e7cfb7dde1fdbf2c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b73332ffdc52f043657fdf9a3623117ef121c4ddf51b1d8d47d47c56253f7ede3dcc73993ef250e7c27c0874c99faf82d019e450e781cd533f56c63a951a7578c3a1543193cc62f7550cf02f02beb96f9a5c023d378e0711107f5d9e6c8338d8ca79a8c670019cf0d643c7dc978e693f13c42c6d39d8c673419cffd643cb793f13c4bc6733519cfd3643c9dc8782692f14c27e31941c633908ce75d329e9bc878fa91f13c46c67329194f57329eb1643c43c978ee24e32923e379918ce75a329e8e643c95643c93c8786690f18c24e3b9888c671019cf2d643c5790f1b421e32921e3a920e379828c671c19cf30329ebbc878ae27e3e943c6338f8c6732194f0f329e99643c0f92f14c21e3194cc6731b19cf55643c1793f13c45c6534ec6d39c8c670219cf70329e7bc8783a90f1dc48c69324e379948ca71b19cf2c329e31643c43c878ee20e379818ce71a329e67c8787a91f1d492f13c40c6732f19cf05643c3793f15c4ec65344c6534cc6d3858ce771329ed9643c35643c53c978aac878fa93f15c47c6d39b8c672e19cfc3643c3dc9784691f1dc47c6b3908ce756329e2bc9782e23e379928ca72d194f3b329ece643c73c8780a087812c1e1effe27e0ffef824dde517f056ccb747e11d89a597c34d7f9a5602bd47959c731617abafde1eb469d5cbd978fbe92302ffe8a80631909cf1c329ece643cedc878da92f13c49c6731919cf95643cb792f12c24e3b98f8c6714194f4f329e87c978e692f1f426e3b98e8ca73f194f1519cf54329e1a329ed9643c8f93f17421e32926e32922e3b99c8ce766329e0bc878ee25e379808ca7968ca71719cf33643cd790f1bc40c6730719cf10329e31643cb3c878ba91f13c4ac69324e3b9918ca70319cf3d643cc3c9782690f13427e32927e3798a8ce762329eabc8786e23e3194cc633858ce741329e99643c3dc8782693f1cc23e3e943c6733d19cf5d643cc3c878c691f13c41c65341c65342c6d3868ce70a329e5bc8780691f15c44c633928c670619cf24329e4a329e8e643cd792f1bc48c65346c6732719cf50329eb1643c5dc9782e25e3798c8ca71f19cf4d643cef92f10c24e31941c6339d8c6722194f27329ea7c978ae26e379968ce776329efbc9784693f17427e379848c673e194f5f329e1bc8780690f15493f14c23e3199f231ef56ebbbc3b1900174e49c82f059e771df038aa67197ed7e0bb18d7abb45a6e68b5d0d0aa18ca2c01fd963bd0af00fccaba657e39f0c8f991b0e237159e256114dbbb8e791250679932ed03cb81c7c53ee9a89ea9585d61d4e9598bee5206637585837adaf61d995f013c2fe8bcb026a0dc0b248c625bea98270175962953acae001e17fb8ea37aa66275a551a7172cba4b198cd5950eea69db77647e25f0bca8f3c29a80722f92308a6db95b9e8a04d459a64cb1ba12785cec3b8eea998ad555469d5eb4e82e6530565739a8a76ddf91f955b01d3cb367b6312b1ee96f2bac0928378584516c2b9cf2549425a0ce32656ac756018f8b76de91eea9766cb551a72916dda50cc6ea6a07f5b4ed3b32bfdae2bb3488578b35f5d0628d85674d8eb5107fd9322f6984cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc0c3a2b1e19ff4e5813506e2a09a3d856bae549bd17343538742a30e693905f033cab1ce8e3a89ea93ee46b8d3a4db5e82e6570ff5aeba09eb67d47e6d7c276c88679752364f63a378c59f14cd379614d40b969248c625be59627d58e4d0b0e9d32b5636b81c7453befa89ea9766c9d51a76916dda50cee5feb1cd4d3b6efc8fc3ad80e9ed933db9815cf749d17d604949b4ec228b6354e79ca53ef374e0f0e9d32b563eb80c7453bef48f7543bb6dea8d3748bee52066375bd837adaf61d995f0fdb211be6d58d90d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a6786ce0b6b02cacd206114db5aa73c9d53cf1d6604874e999e3bac079e75b1f3a49f3b38d03df5dc618351a71916dda50cee5f1b1cd4d3b6efc8fc06d80e4d9d79752364f6b1911b661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e6266880dc53353e7853501e56692308a6d9d5b9ed4770f6606874e99faed6c009ef50ef47154cf54bf9d8d469d665a749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3745e5813506e1609a3d8d6bbe549b563b38243a74cedd846e071d1ce3baa67aa1ddb64d4699645772983b1bac9413d6dfb8ecc6f82ede0993db38d59f1ccd679614d40b9d9248c62dbe09627d58ecd0e0e9d32b5639b80c7453befa89ea9766cb351a7d916dda50cc6ea6607f5b4ed3b32bf19b68367f6cc3666c53347e7853501e5e690308a6da3639e04d459a64cedd866e071d1ce3baa67aa1ddb62d4698e45772983b1bac5413d6dfb8ecc6f019eb93a2fac0928379784516c9b1cf324a0ce32658ad52dc0e362df7154cf54acbe6fd469ae45772983b1fabe837adaf61d997f1f78e6e9bcb026a0dc3c1246b16d76cc93803acb942956df071e17fb8ea37aa66275ab51a77916dda50cc6ea5607f5b4ed3b32bf1578e6ebbcb026a0dc7c1246b1613b36df114fb1c1536cd1e268f956f3bd74be48ff26e0ffbd80d155db32df6094798c71e475ad5989c153626876347dabfa57ea7c1bfd8bdbab121819b657490e346b67f0b433343b9abe9516bd75beadfec5edd51b1819b6573be071d03e57240c1e35653a766f75ac8fa37aa68edddb02bbee781c923278ecdee6a09eb6730999df06dbc1337b661bb3e2e9aff3c29a8072fd4918c586e7fcdbe3e7a948183c6acad48e6d77ac8fa37aa6dab10f02bbeedb41772983b1fa81837a16805f59b7cc7f00db211be6d58d90d9ebdc3066c53340e7853501e50690308a6d1bf0ec889fa72261f0a829533bb6c3b13e8eea996ac7760676dd7780ee5206f7af9d0eea59007e65dd32bf13b64336ccab1b21b3d7b961cc8a67a0ce0b6b02ca0d246114db07c0b32b769ef4982fc8a3a64cedd82ec7fab8a967ba1ddb1dd875df05ba4b19dcbf763ba86701f89575cbfc6ed80e9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99b99915cf209d17d604941b44c228b69dc0f361ec3ce9e70ec8a3a64ccf1d3e74ac8f9b7aa69f3bec09ecba7f08ba4b198cd53d0eea59007e65dd32bf07b68367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b666e66c53358e7853501e50693308a6d37f07c143f4f45c2e05153a6e70e1f39d6c7513d53cf1df60676dd3f02dda50cc6ea5e07f52c00bfb26e99df0bdb61af67f6cc1666c53344e7853501e58690308a6d0ff0ec8b9d27fdfc1479d494a91ddbe7581f37f54cb763fb03bbeefb40772983b1badf413d0bc0afac5be6f7c376c88679752364f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdcef9a3b3e2a9d279614d40b92a1246b1ed059e8f63e7e95c963078d45460cc2721ffb1637ddcd433fddce14060d7fd63d05dcae0fe75c0413d0bc0afac5be60fc07668eaccab1b21b38f8ddc30fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c731433436c289e6a9d17d60494ab266114db7ee0f9247e9e8a84c1a3a602633e09f94f1cebe3a89ea97e3b0703bbee9f80ee5206f7af830eea59007e65dd327f10b68367f6cc3666c53342e7853501e54690308aed00f07cea802761f0a829533bf6a9637d1cd533d58e7d16d875ff1474973218ab9f39a86701f89575cbfc67c03352e7853501e54692308aed20f0b888d502ed0f7964fe5302df6abe46e78bf42f6eaf1a6064d85ec539d0acc4e02931343b9abe55fdc7e97c1bfd8bdb6b1c30326caf921c68d6cee069676876347d2b2dc6eb7c5bfd8bdb6b3c30326caf7639d0ec68b6874773df3e9a71ea353f7a9a171c45cd0b8ea2e6055e732acd1d1c5fcaf1581600034e49c87f063c9fc7cf93bac7f559163c9f03cf0fe3e7e9e4a89e656abd3f02f6b8d6abb4fab1a1d5678656c55006197eec40bf02f02beb9679f1e7993d7314339edb0a6b02ca7d4ac2283669835cb51baaee97ea75c9fa5b84e9e009757e5d3c7bc0fbae2df47a8543fc1542997b4aebca7eaed98ae0ffb2dd547d0e183647ef0377b23d039379f15714e4ee3e68a6fbb2a8858b6737d91ef70f5878be8b8fa70cf773f4b5df51ddb3798eb6dfc21363dd3b453d43dc177fdd53ed4747bd2e59bfda47bf38c1a9e615b8ef49fbd1d1a8732194e9525a57f61b683f6c6d85eb7d53cec9cd7db35950d79e0957a9b69bcf57bed37629f70994c736a797fec5fdb317d4d555bb18758f09db45b3ed76a9bdf98ccff45d0cba7c42aa99ed3905ea5869e1ae24e0c678cce57e26ebb63d23ab347464d30cb7f527161d7b5bb87b137033eed7bd0d1dd9343bd27edddfc2dd9f809b71bfee6fe8c8a6d991f6eb0116ee0104dc8cfbf500434736cd8eb45f0fb4700f24e066dcaf071a3ab26976a4fd7a90857b100137e37e3dc8d0914db323edd7832ddc8309b819f7ebc1868e6c9a1d69bf1e62e11e42c0cdb85f0f090ed5914db323edd75516ee2a026ec6fdbacad0914db323edd7d516ee6a026ec6fdbadad0914db323edd7232cdc2308b819f7eb11868e6c9a1d69bf1e69e11e49c0cdb85fd7b7df3eeb7e5d63e1ae21e066dcaf6b0c1dd9343bd27e3dcec23d8e809b71bf1e67e8c8a6d991f6ebf116eef104dc8cfbf578434736cd6cfbb5a3f7f2cab37d4ff0a0537dd2e3351fcc82e763e07111538ee2a0cc513f9754dfd47d8656070dad701c8cfda09f83be3019dfef177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f11b87f87c45ca7d42c228367c26e5e23ebfaafb657a5db2fe1661ea71529ddffdb1fb2d2f2b30fc258143fc1542996667d795edadd98a82c3b71b8e6b8ddb726fec75486f4b33fe655efc15417df6018f83f7f3533cfb0d9efd162df0bdd3787c970f73a3717999fa3e5eeba06e3bef35ea839a7e14bbff43352d3034fdc8b1ef4470e8f614069c9290471e17cf861dd533d516ec31ea646a5c0c652e807aee7150cf02f02beb96f93dc023133e9377158381c11358f491a919194f3519cf00329ef3c8786e20e339858ca72f19cf23643cddc9785a93f18c26e3b99f8ce776329eb3c978ae26e3c9c53978363c4f93f17422e3399e8c6722194f2119cf08329e03643c03c9787e40c6731319cf25643ca791f1f423e3798c8ca72b19cfa5643c09329eb1643c43c978ee24e32923e3694fc6732d19cf89643c95643c1dc9782691f1b424e31949c6731119cf20329e0bc9786e21e339838ce70a329e27c8782ac878da90f19490f18c23e31946c6731719cfb9643cd793f19c4cc6d3878c6732194f0f329e56643c0f92f10c26e3b98d8ce72c329eabc8782e26e3798a8ca79c8ce738329e09643ccdc9788693f1dc43c6d3818ce77c329e1bc9784e25e34992f13c4ac6d38d8ce758329e31643c43c878ee20e32925e3b9868ce719329e5e643c2790f1d492f1b420e379808ce75e329e0bc8786e26e3399d8ce772329ec7c978ba90f11491f11493f1d490f15491f1f427e339878ce73a329e93c8787a93f13c4cc6d3938ce718329e51643cf791f1dc4ac6732619cf95643c9791f1b425e36947c6f324194f67329e02029e4470f8b79812f0fffd60936f067d0cb66696f5c9735829af8e8bd3db1fbeee6696757f6461409d3e84ba2475beecfb4d299dd05712e6c55f11707c44c2d3998ce749329e76643c6dc9782e23e3b9928ce74c329e5bc978ee23e31945c6730c194f4f329e87c9787a93f19c44c6731d19cf39643cfdc978aac8786ac8788ac9788ac878ba90f13c4ec6733919cfe9643c3793f15c40c6732f19cf03643c2dc8786ac9784e20e3e945c6f30c19cf35643ca5643c7790f10c21e31943c6732c194f37329e47c97892643ca792f1dc48c6733e194f07329e7bc8788693f13427e39940c6731c194f3919cf53643c1793f15c45c6731619cf6d643c83c9781e24e36945c6d3838c6732194f1f329e93c978ae27e339978ce72e329e61643ce3c8784ac878da90f15490f13c41c6730519cf19643cb790f15c48c633888ce722329e91643c2dc9782691f17424e3a924e339918ce75a329ef6643c65643c7792f10c25e3194bc69320e3b9948ca72b19cf63643cfdc8784e23e3b9848ce726329e1f90f10c24e33940c633828ca7908c672219cff1643c9dc8789e26e3d947c6733519cfd9643cb793f1dc4fc6339a8ca735194f77329e47c878fa92f19c42c6730319cf79643c03c878aac9789a91f18c3778f0ffeadd30393f926f0715c2ff07ebcee5257a5d5246de5152f7ba761b3655df5d8eeabb3ba89b9230bf0bea2becbb8167b7239e0f0d1ed37711e42b41b39d864d31ee70c4b8d36094f91dc028faed049e9d8e7876193ca6ef22c8f706cd3e306c8a71bb23c60f0c4699df0e8ca2df07c0f381239e1d068fe9bb08f2fd41b36d864d316e75c4b8cd6094f9adc028fa6d039e6d8e78b61b3ca6ef22c80f00cdde376c8a718b23c6f70d4699df028ca2dffbc0f3be239ead068fe9bb08f20341b3cd864d316e72c4b8d96094f94dc028fa6d069ecd8e78b6183ca6ef22c80f02cd361a36c5b8c111e3468351e63700a3e8b71178363ae2d964f098be8b203f18345b6fd814e33a478ceb0d46995f078ca2df7ae059ef886783c163fa2e82fc10d06cad61538c6b1c31ae3518657e0d308a7e6b8167ad239e75068fe9bb08f255a0d96ac3a6185739625c6d30cafc2a6014fd5603cf6a473c6b0c1ed37711e4ab41b395864d31ae70c4b8d26094f915c028faad049e958e7856193ca6ef22c88f00cd961b36c5b8cc11e3728351e69701a3e8b71c78963be25961f098be8b203f12345b6ad814e312478c4b0d46995f028ca2df52e059ea886799c163fa2e827c0d68b6d8b029c6458e18171b8c32bf081845bfc5c0b3d811cf1283c7f45d04f971a0d97b864d312e74c4f89ec128f30b8151f47b0f78de73c4b3c8e0317d17417e3c68b6c0b029c6771d312e301865fe5d6014fd1600cf02473c0b0d1ed37711e4ef009bf0f604db3b3adf036c6feb7c77b0bda5f3ddc0f6a6ce7705db1b3adf056cafeb7c05d85ed3f9ce607b55e7cbc1f68ace7702dbcb3adf076c2fe97c5fb0cdd7f924d8e6e97c3fb0cdd5f9cbc13647e7af00db6c9dbf126cb374fe2ab0cdd4f9abc13643e7af01db749dbf166cd374fe3ab04dd5f9ebc13645e76f00db8b3a7f23d85ed0f99bc0f6bccedf0cb6e774fe16b03dabf3b782ed219dbf0d6c77ebfced603ba8f37782ed539dbf0b6c9fe9fc3d60fba1cedf0bb6cf75fe3eb0fd48e7ef07db8f757e28d87ea2f3c3c0f6539d1f0eb69fe9fc0360fbb9ce8f02db2f74fe41b0fd52e74783ed573a3f066cbfd6f9b160fb8dce4f00db6f757e22d87ea7f3b560fbbdce4f02db1f74fe61b0fd51e72783ed4f3aff08d8feacf38f82ed2f3aff18d8bed0f9c7c1f6a5ce3f01b6af74fe49b07dadf34f81ed1b9d7f1a6c7fd5f967c0f6379dc7b16effaef3a541bcedecb741dd540abec59f2af30f9d6f699491650ba1cc71ba83a37ac6a1be652aedb0b4cbca26edf03b609376f86db0493bfc16d8a41d7e136cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8923a3f1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493b3c1d6cd20e4f039bb4c353c126edf014b0493bfc22d8a41d7e016cd20e3f0f3669879f039bb4c3cf824ddae187c026edf0dd6093fde55bb049db7c106cd2367f0a36699b3f039bb4cd3f049bb4cd9f834ddae61f814ddae61f834ddae69f804ddae69f824ddae69f814ddae69f834ddae65f804ddae65f826d8cceff0a6cd236ff1a6cd236ff066cd236ff166cd236ff0e6cd236ff1e6cd236ff016cd236ff116cd236ff096cd236ff196cd236ff056cd2367f0136699bbf049bb4cd5f814ddae6afc1266df337607b46e7a5ad6e05367956aca6b2ef39e1383c78ce2f4cc920deb61fa724e49f86bacbd48c8ce725329e6a329e01643ce791f19c42c67337194f6b329e99643caf93f1fc958c673519cf2a329e6d643c5bc978ce26e3d947c6733c194f2119cf3c329e11643cef90f11c20e31948c6f303329e4bc8784e23e33948c67329194f828ce755329ee9643c2bc9785690f1bc4fc6b3858ca78c8ca73d19cf89643c95643c1dc9785a92f1cc21e31949c6f31619cf45643c83c8782e24e339838ca70d194f0919cf54329e71643c2f93f12c27e35946c6b3998c671319cfb9643c7bc8783e24e339998ca71519cf2c329e37c8780693f19c45c6b3808ce762329ee3c8789a93f1cc27e3594ac6b3848ce75d329e8d643c1bc8783a90f19c4fc6b39b8c671719cfa9643cc792f1cc20e3798d8c6708194f29194f2f329e13c8785a90f1cc25e3594cc6b3888ce76d329ef5643cebc878be25e3d949c6b3838ce774329e22329e62329e69643c35643caf90f15491f1f427e339878ce724329ede643cc790f1cc26e3798f8c672119cf9b643c6bc978d690f17c40c6b39d8ce74c329ecbc878da92f1b423e39942c65340c093008e006cf2ffe660fb46e70f804dbed7b30f6c5febfc02b07da5f3cf80ed498bad99854f18be019bbcdbfc14d8e4fee7d760937702be029b9c57897f353fbffde1fccd6019f1d3dcc28ffebeb270491eb7b72c930ce2dddee82b191cfe3da522e0788a84670a194f3b329eb6643c9791f19c49c6b39d8ce703329e35643c6bc978de24e35948c6f31e19cf6c329e63c8787a93f19c44c6730e194f7f329e2a329e57c8786ac878a691f11493f11491f19c4ec6b3838c672719cfb7643cebc878d693f1bc4dc6b3888c673119cf5c329e16643c2790f1f422e32925e31942c6f31a19cf0c329e63c9784e25e3d945c6b39b8ce77c329e0e643c1bc8783692f1bc4bc6b3848c672919cf7c329ee6643cc791f15c4cc6b3808ce72c329ec1643c6f90f1cc22e36945c6733219cf87643c7bc878ce25e3d944c6b3998c671919cf72329e97c978c691f14c25e32921e36943c6730619cf85643c83c8782e22e3798b8c672419cf1c329e96643c1dc9782ac9784e24e3694fc65346c6b3858ce77d329e15643c2bc978a693f1bc4ac69320e3b9948ce72019cf69643c9790f1fc808c672019cf01329e77c8784690f1cc23e32924e3399e8c671f19cfd9643c5bc978b691f1ac22e3594dc6f357329ed7c9786692f1b426e3b99b8ce714329ef3c8780690f15493f1bc44c6d38c8c67bc856781231ee9bb22eb96f9054ddcf72ec3f7ae3cf1bdc3f0bd234f7c6f377c6fcf13df5b0ddf5bf3c4f716c3f7963cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b4ff22d883dfa3701ffc7f1e3f639625c6030cafc3e60141b8effdecb114fd4b57b2f02df4a0be9bb28efd027e0ff95c0e82aa67a198c326f8b291c6fb4d2114fd43d874a02df4a0bf996a37c132b01ffc7f1535cc554a5c128f3b698c2f1bf7a3be289ba57d29bc0b7d242bee528df004ec0ff717c225731d5db6094795b4ce17813fd1df144dde3e94fe05b6921cf62e4997902fe3f00185dc5547f8351e66d31b515780638e289ba373580c0b7d242fa9e499fe504fc7f2030ba8aa90106a3ccdb626a0bf00c74c413754f6d20816fa585bc1b25efb026e0ff8380d1554c0d341865de16539b806790239ea87b8183087c2b2d06ebbc7c232701ff1f0c8cae626a90c128f3b698da003c831df144ddc31c4ce05b693144e7e51b9c09f8ff1060741553830d4699b7c5148ee73bc4114fd4bdd72104be9516553abf56ff26e0ff55c0e82aa686188c326f8b291cafadca114fd43de32a02df4a0be91b237d0613f0ff6a601ce288b1ca6094f921c028b655c053ed8827ea5e7735816fa585f4755fa97f13f0ff11c0e82aa6aa0d4699b7c5d40ae019e18827ea1efd0802df4a8b913a2fdff048c0ff4702a3ab981a6130cabc2da69601cf48473c51cf164612f8565ac8d807f24dbe04fc1fc7cb761553230d4699b7c5d412e0a971c4b3c8e05964d1e268f9565ac8b75f16ebdf04fc7f1c30ba8aa91a8351e66d31b50878c639e2897a96338ec0b7d242fa76bea77f13f0fff1c0e82aa6c6198c326f8b291c7f79bc239ea86750e373e03bea794a2e7c473d1bc885efa8fbdcb9f01d75cf3617bea3ee3fe6c277d4bdb45cf88eba2f940bdf51f73872e13bea7a3d17bea3ae3d73e13bea3a2a17bea3ae0972e13beafc3617bea3ced572e13beabcc3b7e7be3d8fdbf7d13c77c8d7f6fc681e438fe6b1c45f1bf86b835cf9f6c7127f6d902bdff97a6de0dbf3dcb7e772fd5510445f8f2d73e47b89e15be6f139cb1247be1719be651e9f192c72e47ba1e15be6f1fef74247be8b0ddf32bf3007be4b0cdf2539f4ddcef0ddcee2dbc5f64e04875e7f0b034e49c8630cbce780c7513dcbd47a17eb757d17e37a6df76dccfda518ca2c06fd5cb71db2ee4c6d47abf87c9725c0878c19a76cf22cf61db0491bfa36d8e419fb5b609376fe4db0c9f39d37c026cf7f5e07db489d3f0836790e8bfddfe559fa76b055e93cf6bb1ea2f35bc126fd92b0bfaff42ddb0236e91f88fd4ca58fe726b0493f5decdf287dad37804dfacb63bf3a79e7611dd8e4bd15eccfb54fe7d7804dbe5189fd88bed6f95560fb46e75782ed699d5f01b62774fe6eb07da9f3df82ed719d5f08b62f74fe3db03da6f38bc1f6179d7f0d6c7fd6f957c1f6a8cebf02b647741edf0bfb93ce7f08b6c93a8fef23fd51e77781ed619dc7f760fea0f33bc0f67b9d7f196c9374fe25b0d5eafc7cb0fd4ee7e7816da2cecf05db6f757e0ed826e8fc6cb0fd46e76781edd73a3f136c63757e06d87ea5f3d3c13646e7a7816db4ce4f05db2f757e0ad81ed4f9bf82ed173abf086ccd747e09d8647c41ecf321dfcc5c063619371bfbf2c85802e3c1768cce8f035b2b9daf019b7c676d24d864acde11604be87c35d88a74be0a6c72ae33046c32d6ca60b0c979c920b0b5d5f98160937388016093b10ffb834dbee7d91b6c32a67725d8e43bfebdc07692ce2f009b8c6fb60f6cf2cdb50360937184bf069b7c6bf91bb09daef34f834dc67c79026c67eafc97603b4be71f079b7c9ff30bb095eafc63606baff37f01db393aff67b0c9f8608f824dbee9f608d8641cde3f814dbe9d3c196c17e8fc1fc176a1ce3f0c361947e50f6093b1247f0fb60e3a3f096cf20de95ab05daaf3bf039b8c6d31116c97e9fc6fc12663184c005b279dff0dd8ca75fed760ebacf363c156a1f3bf025b179d1f03b6ae3a3f1a6cdd74fe9760ebaef30f82ad87ce4b3ba3f667b59fefd7f3c920def3ec8f8343a74ce7d9c2803c719eb716030ffada1b7bddcb53e7c8d21634d3eb9518da0bbef7c4ee3b7d7efe915e57a15eef1ec377219469ab1b07b59c1cf39bebe5f619cbe13d2159b72c7319d83f34d65da2ebfb91a3faee3198841b759032276826756cdcaef38ede872f57fb80c45a001ae29484bc30b8d1aabc0ccf85ebc3f311f0ec8d9d277dedeb222670df8afbdad7bc276ac65a3194d903fa7de8403fdcd765dd322ffe3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed933f3332b9efd3a8fcf9aa5dc7e1246b1ed051e17f7f9f139acac5f3dd75976769ddfbdb1fb3df4f95e0bbdde32a3ce8550e6eff0cc6995cee3389eb2dda2b6a583e78419b7a5f82b82fae0b3a0fd8e78f61a3c7b2d5a48be3436dfe5c3dc685c5ea6fab2a867ecfb0c5df75b3475b5bfeed5eb2a3034c5fdf56383079f8d1601ef27fa3701ebf904eae0601fcf1817e20ff7a5bd6093fcc7c0e8623be3b144da03791e8ecfa6a5cc3ee3b978fcdbbebccc65bbb11bea940c0e8fef42287310dabecf741efb86ec07dd7e67f9bf4c999e538b7eaace3be3af736afbee00ce24f841df1f006b4cbe0f791fa54027f123f642c8ff16fa734839d143b41676b58f489f4e643797fbd858ae18caecb2d43f19c45bff9d06cf4e83596d931f419cfd0e8effaedaa45d111a5d061a4999bda0d13e473c7b0d1ee1107faa8c6cff96461959b610ca7c096d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f147c068d651c5478f93ea78f7c6cedbb8fa7ffd1bb41771f7fffa3788a102e0088cf597c1fa85ab65107d6c9132ffd3388ebab8c6c06d69ea893a4b99ff05ed50c7d2743e9b73fda375dd1675aebfcb014f2238f4da5b4d998eef788cd9ed80c7513dcb6cc7ae0f8d3a1543990ba09e0ece6332be57bb137cbbd8e6a8859c43ed31b4288432ad4bd3bfd27644e988d7aa1fe5a42ee5d6f3c1324b5da44c49695d5d5a813d4e2697dbed03a8935aef5e4b5da5cc09a575ba9ca4f309d84e78dfe47ccbff65cad41ee0b836dbe2af736afb6e05ce24f841dfef036b4cbe0ff9ae869cef8b1fb11742febcd2bab2524ef410ad855ded23f2ce1fb29bcbed31962b8632db2df54f06f1d67f9bc1b3cd6056dbe4d4d2babcc491cb76737b844665a09194c1fbc7726cc7f7ee6cc7fdbd8eb8a38efb7b81d16c37f1dcc525db3e83cdbc876a3b1f9432784e26653a97a67f553b9bb09435ef0dbbb88f89ef9606508fc0a8ab4c18030eae0d2bf0da49da29f1d311ec7b755e74ee68685708657a97a67f1d9e775bef5d9ad777784d21dce6be85ef7e5c5e5ac7ade25eb6d35efd5b04b64ff56fabc0c9755a85ed9ea170d8ee195e5b5ac78ecb0ad7414b5dcc6be466c1e1f7d4bf33cae27db74ccba12f351d309651fa7e6a61da6bf86905cbc6f6ae46a7b2b228fe03c0f7b1c16cd355f6038cb9bd3a6fee2b786d2c65ee2e4dff4a9b649655dbfe8b13eaf491ed28da617b8231f931302675beecfb4da97dee80517f99177f8a51eef71c009ef8dbaef4fb4ad9dc07de073c2eda76476d74191e635bc5b6de1e55b6e3ffc78656397c5e6b3de69bcfdc5b19f9787c9757dbee3fd9b4d863e171f51c254a8b3d16dff169d17598ad9db36991cbbe0f515a7c68f11da31623f0be67262d765b785cdc8bcaa4c56e8beff8b4e85696e9b9066ab1cbc2e3eade439416e22f5be60f09985b19f9787c5754d9ee93d9b4d869e17175dd1ca5c54e8beff8b4e8d415efd165d262878527fefb7399b5d861f11d9f16dd7be03dbc4c5a7c60e171f54c374a8b0f2cbe638c8be1b67b39362db65b78b6e7588bed16df319e1f76b5dd6bb369b1cdc2e3e0be6b462db6597cc7a8c550bcef9a498bad169ead39d662abc5777c5a5475b1dd13b669f1be85c7d53de1282ddeb7f88e4f8ba1dd95ef2df5d0628b85674b8eb5d862f11de335542a2e36d7438bcd169ecd39d662b3c5777c5a54a7ceb536d5438b4d169e4d39d66293c5777c5a94a58ea91beba1c5460bcfc61c6bb1d1e23bc6b8485d4f6ea887161b2c3c1b72acc5068bef188f23a9b8585f0f2dd65b78d6e7588bf516dff169312275ff695d3db45867e15997632dd6597cc778cf2515176beba1c55a0bcfda1c6bb1d6e23b3e2d3aa78ea96beaa1c51a0bcf9a1c6bb1c6e23b3e2d86a79e89adae8716ab2d3cab73acc56a8bef18cf3b53edc5aa7a68b1cac2b32ac75aacb2f88ef1bc3375ff62653db45869e15999632d565a7cc7d876a6ce3b57d4438b15169e1539d66285c5778ce79d292d96d7438be5169ee539d662b9c5778ce79da9e3c8b27a68b1ccc2e36a3c91282d96597cc71817a9b673693db4586ae1599a632d965a7cc7785f2bd5762ea987164b2c3caec66b88d26289c5778cd723a97b7c8beba1c5620bcfe21c6bb1d8e23bc66745a973f045f5d062918567518eb55804bef7c5ee3bdd9f5b7c485fac4b0d2d0aa14ccbf6e95fe98b15a5a3ac03fb95615dde8bbd2ee97e650b23eaf21ed445ca14415d5a054ec6fba97054d754cc2c803aa9f57e62a9ab9469d7be4e97e3753e01dbe420e8768ee5ff321518f349c88b7eaaceefc45fe754acbe0d9c49f083bedf02d6987c7742df053a891fb11742be7dfbbab2524ef410ad855ded23efea3cb29bcb2d32962b8632ef5aea9f0ce2adff3b06cf3b0673eabd0788338923376d579ae9dd088d2e058da40cf6d9fbc4118fd9875038c49f2a23dbbfa55146962d843217431b85fd4aa59e89e0f07e938edab24ec82eeb9679f1570cb67dc068d651c5c741e8fb296345c83812ca26e3427486f574336caaaedd1dd5557cc9ba65be3b30ca3815dd72cf585e5fc6ae06a3e2e9e940331c7b43a64cc78b9ec0d3c3018fa37aa68e43bd8c3a7537ea540c65f0ddc65e0eea59007e65dd32df0b7cbbd8e6a8851c932f32b4288432d71ae78f513aca3a54fc76b3d4a58fe3bac8baa55dea9303df9586ef2e86ef4470e8760e82ccfb572530f776c0acd6db37fef596e1799bc494f8e90275ea071ac455275c979ce7f533b42d84fc7d709e27e5a4ac1cbf845dc5b26c4b643797eb692c570c65fa58ea9f0ce2ad7f5f83a7afc1acb6c9ed706ee7607f48c5401f8343e6bb80767d23b4eb03da49193cfe7573a45d6f83a7b7e15bf1c8394e2fb0c9b982f027e0ff9d73c06db67bbd2cdc62c371e26ce73a5de367cc78aed31518c5d61b782a1d69666eeb8b0c7df0b8dcd22823cb16429909706c4c58caaafdee8282ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6383bab11a27d6d64c18fac0f0db87a71f3d0a5aa18189bf05966a34031be69b5b6c4170e8909485609321295b80ad99210b0e8529e565483b1772a11eb2ee4283b315b0c4e91b87f3942953e81c033c2e4259858e0ce9a943e7ee09a36a87637cb430381b123bea7fcd33948b5a97abed60ee1349983763b0d091ffe650df24cc8b3fb56d8a757edcd0610ff59bf0c0a431c3c7d64e44a1cc1d1bf305c1a11bc0fc8d12dcd54e87018015c6c6a185512f6c30e47fb2618e8d9fb302c7cc35b509c09f4cc7826ead1de8a6d62f63df0e1b3a7af4ad93aa468f1a76f5a4b1c36a47d58cc5add9ca502e6a4bcbff5b82cdd6c463593561b385cb1e63b1d9261c65b815d8e4c8d51a6cc2732cd89a435eca9b5bc649b89e07eb975d4afd4f89d34257fc98a02e04e470acda55b5ffaacfc7aad32035d4b11ada586d4e3574b1ba63a88626565fb153430faba186d5d0c2a705e9a183d550c16706e9a180d5d72e4a83f4d0bee7047543f7aae920709e1fa487e655b7692e0cd2a75d6a68dd0e417ae85c75eb52bdbaae3ef3a6dead57a7efeab6803ae5559778ea72449d82aa534f75fb42ddca52a774ea74599d0aaad3377539d2576bdd2f4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e30dd19a48777be2b480fbfae867fbe27480f0d7d6f901e36fabe203da4f4fd417ab8e9a1417a28ea61417a98eae1417a08eb0782f4f0d6a382f4d0b90f05e9a176c704e9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f263417a18663564f393617a2a480fe9fc4c989e0dd373617a3e4c2f84e9c5203d3cb81a367c5a901e665c0d3f3e33480f573e3b480f6fae863d57c3a1ab61d2d5f0e96a587535ccbb1afe5d0d0bff7a98de08d39b41fa91847a14a31e51a8dbffea3198ba45fd5e90be75be38483fe2568ffc551708d5254475915919a4bb50a92e65aa8b9dea72a8ba60aa2ea9aa8baeeab2acba70ab2eedaa8bbf7ae541bd02a25e8951af08a957a6d42b64ea953af58aa17a4d54bd76a95e2356af55ef0dd2b7c5f707e947a5ea76b87a34a0e251ddbeff2c4c3f0cd3e761fa51987e1ca69f84e9a761fa59987e1ea4873056c31dabe192d5d0ca6ac865353cb31aca590d05ad8688fe63901e7a5a0d5dfd97203dfcf59761fa2a480fc1fd4d901e7efd6f61fa364c7f0fd33fc2f4cf30fd2ba81b4a1b1b8bd3740ba3af5282a1b5b5c3c78cab2dadad291d336974eda871a31f2d9d3caa766469cdc3c3278c185d331917fe5c2f2ce380f79b3061e8a3a5a3c6560f7fa4b466526d69cd88d2aa9a4963ab0f3950ff532f74c6e11e875657473bfbf7ef43fa7f1ae8b4b56efb6484f5eb32d7ada879030439ae210b756ddeb00a3da68f5272397b47fa5cb774e2e89adad2b2d2b1e1dff0e05a33797875c752fcdfc450e489b5a5136b874ea82d1d31a1664c69a78eb8de29c736a01205093730ed4e6b983825fa5b4a0d0ab1bd673740812fce6e18e97ffb3ea4ffa3814e5b9536a0866d1ab2507969c3082b4b23659938a9aa76c2d061b5d10bf7fb3e0b5fd3906aded5c06ab668df006789862c7451fb86115ed31067e3b37016fc7f2c09ce921c4f0600", + "bytecode": "0x1f8b08000000000000ffed9d777414c7dae65b2030782c01ced9c2e13a60632144163038e78c8d31c62004061b104118e76c72744ee49c93c91803c6d8d737e7ec74af6fd87376bf3dbb7fecf79dddf56ed74cbd9f1e8aea4123770d8f34d5e794a6fa5575bfbf7afaedea54dd5510a4a77f85a940e79b86e9c2e0c849fe9fd4bfa5df6fea10e3ba4a5d72163410ce260d84b36903e12c6c209ccd1a0867f306c2795c03e16cd140385bc6c859007cae788f6f60bc8906c67b42d030e2b6a88170163710ce560d84b37503e16cd340384f6c209c273510ce931b08e7290d84f3d406c2795a03e13cbd81709ed14038cf6c209c673510ceb31b08e7390d84f3dc06c2795e03e12c69209c6d1b08e7f90d84f3821839db01a7dccbbf48fffe40ff5eac7f2fd1bf97eadfcbf46f3b5dc7423d7f7998ae0853fb305d69fc4f09a36ee89785a9a3f1bff230750a53e73075d1ff2bd1ffeb1aa66e61ea1ea61e61aa0853cf30f50a536fad479f305d15a6abc3744d98ae0dd37561ba3e4c3784e9c630dd14a69bc3744b986e0dd36d61ba3d4c7784e9ce30dd15a6bbc3744f98fa86e9de30dd67b0f40bd3fd61ea1fa607c234204c0f866960981e0ad3a0300d0e5365988684a92a4c43c3342c4c0f876978984684e991303d1aa691611a15a6d161aa0ed398308d0dd3b8308d0f534d982684e9b1304d34347b3c4c4f84e9c9303d65703e1da667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c234294c93c334254c53c3342d4cd3c334234c33c3342b4cb3c334274c73c3f46a985e0bd3eb617a234c6f86e9ad30bd1da677c2f46e98ded32cb223bc1fa679619a1fa605615a18a645615a1ca625615a1aa665615a1ea615615a19a655615a1da635615a1ba675615a1fa60d61da18a64d61da1ca62d61fa204c5bc3b42d4cdbc3b4234c3bc3b42b4cbbc3b4274c1f86696f983e0ad3be30ed0fd381307d1ca68361fa244c87c2f469983e0bd30fc3f479987e6468fee330fd244c3f0dd3cfb4ede7faf717baacecf3bfd4bfbfd2bfbfd6bfbfd1bfbf35caffce98ffbd31ff07fdfb47fdfb27fdfb67fdfb17fdfb85fefd52ff7ea57fbfd6bfdfe8dfbfeadfbfe9df6ff5efdff5ef3ff4ef3ff5af7afef75edb74be45503b258398daa4f2a183d5fd7f11db7cbea89e5d35d5ff93df126d2fd4f3f25ba0edcdf47c33c3de5ccf3737d6d342cfb730ecc57abed8b0b7d6f3ad0dfb897afe44c37eb29e3fd9b0b7d5f36dc19ed0ff4b572cfda36c4db5a9006c129f4dc0d64cdb9a82adb9ac0e6cc7695b33b0c9f66d0eb696da761cd88ed7b616604b685b4bd1324c27685b32882b564a07abf516c5bd5efdcca4387ede4ab5de568e785bc7cf3b44adb78d035e151f27ea751541dc9ca46dc5603b59db5a81ed146d6b0db653b5ad0dd84ed3b613c176bab69d04b633b4ed64b09da96da780ed2c6d3b156c676bdb69603b47db4e07dbb9da7606d8ced3b633c156a26d67814d37b9c1d9603b5fdbce01db05da762ed82ed4b6f3c026e778256093f3bdb6609373bff3c126e78117689b6a3b5a16803f6d97762be54fda6cb0fd40da6bb05d2c6d35d82e91761a6c97826fb15d066d8dd8da699bb45bea7fdd753e19c4b59f94a5f6931e71af375cb35a6fcff8d79b7a7ed72ba8d53a097e7a8056bd753ec6be2d1dd0b79cdb881fb11742fe26282be5440f39f608bb3a1654e87cef0ccb7537962b86321596fa278378ebdfd3e0e969303783bc9b98ed58ea63b6ce53d631db0fca9ab127e7418d31666f050e07315bee63b6ce53d6313b0cca9ab127e7c28d31661f000e0731dbd54dcc9695fa984ddf1b0b027becc9f550638cd911c0117fcc76f2315bf729eb987d11ca9ab127d7c48d3166270247fc31dba5ab3f37a8f39475ccce81b266ecc9fd99c618b3af008783981de2dbd93a4f59c7ec7c286bc69edc2b6c8c31fb1a70c41fb3dd1cc56c471fb341fa396710d8634fee5b37c6985d041cf1c7ec107f7fb6ee53d631bb0bca9ab127cf501a63cc6ed079f59ce1e7fa39c3d960fb85b69d03bcf1c7765599a3d8eee0633bddff2308ec312acff31a636c7fa4f32a8e7f05fd11c4f66be9ab00b6df68dbf960fbadb65d00f572b00f74f1fb40ddeb94ed3ef067286bc6b23c5b6e8cfbc02f80c341cc76f5315bf73a651bb3ff05ca9ab127fd1c1a63cc7e091c0e62b69b8fd9bad729db98fd77286bc6de253adf1863f6bfeabc3a5ff8a33e5fb80c6c7fd2b67660fbb3b65d0eb6bf68db1560fb42dbda83ed4b6dbb126c5f695b29d8bed6b60e60fb46dbcac0f6576deb08b6bf695b39d8bed5b64e60fbbbb67506db3fb4ad0bd8fea96d5dc1f62f6deba66daa9f9ef4bd3aa46d2d803f19c4bb6da5dfa5ac5be63be4c0772bc377ab1cfa6e63f86e63f15de6c077027cc85460cc27215fe696a7b41878d05779fcbe3aaaba770cea5ef772e0e9e4a0ee09f051179e4ec0d3397e9ed4f1b34bfceb4d6de38e86a609f0d511ead5d541bd0ac097ac5be6c55f31d8b06ded6a61ec163f635901f89275cb7c3760141bb6f5f22e95ec3fea787871412daf837d29754e24fee4db55c2510e7629d3a16d2d5b3bcd5604ffc7e35e67c3e6282e537121be64dd322ffe8aa03e9d73cf585657c64e06a3ab36a2007cc9babdefdaed20793c8ebbb8d6b1b569e2bb470e7c77337c971bbeb1ed9429d3b1ad1b30c77ecda98f6d15f1afb714af4fe4da50fce0f9035ec3c55527f42dd786e247ec8590bfada0b6ac94133da41d167615cbb22d91dd5caeabb15c3194e961a97f3288b7fe15064f85c1acb6c9d5702c74b03fa462a087c121f3e5a05d4584763d403b29730968e7aa3deb6ef0c87c67e09176ac0bf0b8ba268ae2c9c5f5d8d17ce3392c5e3fcbfff13cc0d5f6ea6030cabc6d7b750346dbb98a83eb998ce72a9d80516cdd81a7a323cda2b66b4712df0e6225d51e890f393797fdb733d8a54c37fd429d6a2b1f81b6d2458c603cca54d76bdef8b75359ea1abc53163cb8ed1c5c577570148fa578ffe6bb20de5833dba54e865651f7785cb5e51d0d1e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f17912f6db92729d4918cdfe6faeeef3a7be61a8d725eb57cf75feb7d3fe6065a5d83f46fa415c66d4b910ca1435a92dfbffa03f98f99c0afb487676ab5d6a5b627fcc24cc8b3fec6b85db92a1bf53496cbed3dfa274f1bc4df5b156dfd134fb7e76b668eaa2ff336a5a60688afdf12f3778549c5634ad6573f1ec2fdb6791a895e4e37cb6571cd8633dfeed5276d833eb26c1e1ed071e675cf5df91b65a9e97f7307c174299b39ad46e1be95b25e3cc763496c37e3fb26e59e632b05718eb6ead97158e66c6fabbc0b252e65c6853f737a9d5cc415b59966ddf757c6e1eff7138fd1cbf63163c1d80c7453be3e87ce3b0efadc6fd1cdfec9f663b8f9132d8b7cf41bfca8cfd9dc49f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66c5633e6bc5f76bcb491873d4f721f53c43be5526eb4f7d2fb849ad5fd7cfe1e499533ba3cef8eee87f6f525b768bce170547f67788da96aebe4f11b52dc51f7e7b069f05b978ae5b00be64dd65162d245f129bef32676343c873fc8e86aee5164d5dedaff88c1535c5fdb593c183cf46a3beed5366d85cf61d8a8a0bf187fb5219d8248fef47bbd8ce782c31fbf5883f7c7efd23ad6debc0d5b62f2b75d96ee0775392c191f18ddf53f939b47dbfd479ecc3817d47beb6fc5fa64ccfa9453f556707dfd72c2d8075c9f6b57ddbb30fb0c6e4bb03aeab40a73e86068590ffaa496d59292765456b6157fb887c0306d9cde53a19cb1543995e96fa278378eb6f7e6bb5b7c1acb6c96f20cebe86e3bfab36a95784469781465206cf835cf5c933db48b37f23f6db6b6e94c1731629f32f68a3a2fa8fdafa1cba3a8e45f539b49d1b770046b38e663fcf7cefa7f51fd05ec4dd4feb3f2086b09f5660acbf1dac5fb89a07d1c71629f37f8df59be7e4b20cf603fbcffe4ff03d97329dcfe69cfc585d5fd9cec971b9a8ba2b66fc0e5a3246668c0964c1f3042973bcd65ab65945047737cbb24511cb8a56e6b7c28a8223f573f39db5f43edfdba88bc4357e835cca9c04757173de923e0774f54db924d449e5cb2c759532a7c3be76a6ce27603be17e7ba9e5ff32653a07c431dcaf8abfcea9ed7b357026c10ffabe065863f2dd017dcb39a0f8117b21e42f695a5b56ca891ea2b5b0ab7d44cea390dd5cae87b15c3194e963a97f3288b7fe57193c5719cc6a9b9c03717629f44377d556f789d0a81d682465f09ea2ed3ba0b6638cabbefd51c798326034db4d3c4eba6433df1332efabd9ce11a48c2c8be7085da09d4d58ca9af70be5781967bf617c57a20bf8c577255c7dbbb93be89684793c2f3896be5d7cc756f98b1a33a17b0e7c478d99900bdf6d0cdf6d72e8db6bee3567d2dcc11804a9f7cff09ba56aca745e8ae312c8724d80d1c5580e89e0f06f8f1f8d11c77790e59a02a38be343b6df3eef028cb25c2130ba78b714c7dfa80b237e63188ff3c2e8e05bb11deafbad58bca7d71c1899ded9c46753c701a38b7ba8f57d570fcfe75bc0afab71893a66c188e7f3b25c4b6074716f1c9f0dd68511af8b64b9e381d1c533ac6cc777c26fcfe3bd65978c998eed8efba294657befa5c22d4fc6730df4ed605cc39416789ff1685af474cb93f1dc077d3bb8ef97d202c7193c9a16f86cd0c5b88789e0f0e77047e3c1e797b2dc89c09874c4d83b0bc62430fee7bd6260ece388319905631f6014fbc9c0e8e0fe6b8ab14f168c789f52963b0518af76c47855168c5703a32c772a30bab8979a00bf7561bc061865b9d380f15a478cd764c1782d30ca72a703e3758e18afcd82f13a6094e5ce00c6eb1d315e9705e3f5c028cb9d098c373862bc3e0bc61b8051963b0b186f74c47843168c3702a32c773630dee488f1c62c186f024659ee1c60bcd911e34d5930de0c8cb2dcb9c0788b23c69bb360bc051865b9f380f156478cb764c1782b30ca7225c0789b23c65bb360bc0d1865b9b6c078bb23c6dbb260bc1d1865b9f381f10e478cb767c1780730ca721700e39d8e18efc882f14e6094e52e04c6bb1c31de9905e35dc028cb5d048c773b62bc2b0bc6bb815196fb0130dee388f1ee2c18ef01c6bb2d8c7d1d31de9305635f6094e52e07c67be3674c5d4bf7cd82f15ee0b92f7e9e9466f766c1739f5b9ed477f5eeb5f8ba3f7e5fa96dd12fa87bddef079efef1f3a4b6c5fd59f00843312c879a3d103f634ab3fe59303e003c03e2e74969f640163c0340b3072c9a3d183f634ab30159303e083c03e3e74969f660163c0341b3072d9a3d143f634ab38159303e043c83e2e74969f650163c83825acd1eb26836387ec6946683b2601c0c3c95f1f3a4341b9c054f256836d8a2d990f819539a5566c1380478aae2e7496936240b9e2ad06c8845b3a1f133a634abca827128f00c8b9f27a5d9d02c78868166432d9a3d1c3f634ab36159303e0c3cc3e3e74969f670163cc341b3872d9a8d889f31a5d9f02c184700cf23f1f3a4341b9105cf23a0d9088b668f3a627c240bc6472d3c717f27fb118baf518eea3e32a87bdd85a11896c37e12a31d318eca82713430ca72d84fa2da11e3e82c18ab8151964b3866ccd44fa21a7c8f89df77aa5daa0eeaaecf18b73c19fb49a0efb18eb41813d45d8bb16e7932f69340dfe31c693136a8bb16e38067bc032d12e0a32e3cc2500ccb613f891a478ce3b360ac0146590efb494c70c4589305e3046094e5b09fc4638e182764c1f81830ca72d84f62a223c6c7b2609c088cb21cf69378dc11e3c42c181f0746590efb493ce188f1f12c189f0046590efb493ce988f1892c189f0446590efb493ce588f1c92c189f0246590efb493ced88f1a92c189f0646590efb493ce388f1e92c189f0146590efb493ceb88f1992c189f0546590efb493ce788f1d92c189f0346590efb493cef88f1b92c189f0746590efb49bce088f1f92c185f004659ee51c78c99ae5f5e68e4bea3ae551abbefa8eb92c6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbfe8c077027cc85460cc27212f0cc5b0dca39eb15133224f497c3ca55877f4f51241dd5fb2f01438aa3bfa7a99a0eec2d0d0185f6c008c8f360046af63ba0f627d1815cf2bf0ff648c3c2f67c1f30af04c72c4f34a163c93806772fc3ca9989a94058f3014c3728f3600c6171b00a3d7d1ebc8c4e875cc1f1d3da367f48c9ef15830368436dc333688782cab2fa3e299123f4f4ab3c959f04c01cd64b9fb1a00e34b0d80f145b78c65f565543c53e3e7496936250b9ea9a0992c779f5bc6b2fa322a9e69f1f3a4349b9a05cf34d06caa4533078c65f565543cd3e3e74969362d0b9ee9a0d9348b660e18cbeacba87866c4cf93d26c7a163c3340b3e916cd1c3096d59751f1cc8c9f27a5d98c2c78668266332c9a39602cab2fa3e299153f4f4ab39959f0cc02cd665a3473c058565f46c5333b7e9e9466b3b2e0990d9acdb268e680b1acbe8c8a674efc3c29cd6667c13307349b6dd18c95f1d106c0f862036074ac63597d1915cf5c473c73b2e0990b3caf3ae2999b05cfabc0f35afc3ca9987a350b1e612886e51e6d008c2f360046afa3d79189d1eb983f3a7a46cfe819b3637ca90130fa6ded1959191d5c5f657c17e9d546ee3bea5da4c6ee3bea5da4c6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbf1ebfefb26cbf31f33af0b8f8e68da37a96aaf5bea1d7f55d8cfa29adde34b47ad5d0aa18cabc01fabde940bf02f02beb9679f1972df3c504cc8e7c97a9f6a525d45f7cbc68e8a1fcbfe5a8ee516dfd5b8ddc77545bdfd87d47b5f58dddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc7398b6fcc370b6acfdbe5fba76a1d6feb7ca19e97f22f815dca3c755cfab775e0f72117befd3ee48f15f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe77c715e0cff1f9b039ec0e00932f04c21e3a922e3e947c67333194f6f329eb9643c8f93f17425e31949c6f31019cf5d643c2f90f15c47c6f31c194f07329ef1643c53c9788691f1f427e3b9958ca70f19cf93643c5790f17426e3194dc633988ce71e329e52329e57c8786e20e3c9c5fb4bd9f0b427e3a920e39940c6338d8c673819cfa5643c03c8782e21e3b99d8ce76a329e62329e56643ce5643c4f93f18c21e31942c6732f19cf4d643cbdc878e690f14c24e3e946c6339d8ce711329e49643c03c978ee24e3b9968ce732329e67c978cac8789a92f18c23e3194ac6733f194f3b329e5bc87892643c4f90f17421e39941c6338a8c671019cfdd643c2f93f15c4fc6f33c194f0f329e1a329e87c9781e20e3b9988ce736329eabc8784e20e32922e3e944c6f31419cf4c329e6a329ec9643c95643c7dc9786e24e3e949c6339b8ce731329eee643c23c8781e24e3b9838ce71a329e2bc9789e21e3694dc6d3868ca72319cf2c329e02029e4470e4182609f8ffeb606b622cab3efb5ad3b6f6ffef687b1358e65d9d6f6a59f73b60936fc9be6b5916757a07ea92d4f9d2ef37a574425f4998177f45c0f12e09cf2c329e8e643c6dc8785a93f13c43c6732519cf35643c7790f13c48c633828ca73b19cf63643cb3c9787a92f1dc48c6d3978ca7928c6732194f3519cf4c329ea7c8783a91f11491f19c40c6731519cf6d643c1793f13c40c6f330194f0d194f0f329ee7c978ae27e379998ce76e329e41643ca3c8786690f17421e379828c2749c6730b194f3b329efbc9788692f18c23e3694ac65346c6f32c19cf65643cd792f1dc49c633908c671219cf23643cd3c978ba91f14c24e39943c6d38b8ce726329e7bc9788690f18c21e3799a8ca79c8ca715194f3119cfd5643cb793f15c42c633808c47bee7c9c2339c8c671a19cf04329e0a329ef6643caf93f1dc40c6f30a194f2919cf3d643c83c9784693f17426e3b9828ce749329e3e643cb792f1f427e31946c633958c673c194f07329ee7c878ae23e379818ce72e329e87c8784692f17425e3799c8c672e194f6f329e9bc978fa91f15491f14c21e3196be179dd118fbcef2eeb96f9d7497c3bd80ea56abdef39aad3fb7a5dcdf47a855ffc154299c9c7a77fd5fbd8b8ac7099df27c07b71ef8346ef3baa8b6c8f0263fba0efb71df996777e64dd32ff7623f7ddcaf0dd2a4f7cb7317cb7c913df3ece7d9ce7836f1fe73ecef3c1b78f731fe74cbe1d5c1b94e177d2642a30e69390c7eb0517df977354cfc3ae13bf8b513fa5d53c432bf3daaa18cabc07facd73a09fedda53e6c55fb6cc171330635c9404f1c6c5fcf8eb54a6daad96a0eb7c435facd702479a461d43163472df51c790c6ee3bea18d2d87dfb38f7719e0fbe7d9cfb38cf07df3ece7d9c33f95ea8f3315e3796a20ff57c51ae071682dfc53a5f10a35fb5ae457a5d857addc2b118ec52a64922fddb3af0fbbc0bdf7e9ff7c7b67cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ecef9e2dccc4b7ff14b80cd557ffea858ccc5bb04c7d277542c3676df51b1d8d87dfb38f771cee47b8903df09f02153a63e7e4b806791031e47f54c3ddb586ad4e975a34ec550068ff14b1dd4b300fccaba657e29f0c83416785cc4415db639f24c21e3a922e3e947c67333194f6f329eb9643c8f93f17425e31949c6f31019cf5d643c2f90f15c47c6f31c194f07329ef1643c53c9788691f1f427e39947c6732b194f1f329e27c978ae20e3e94cc6339a8c673019cf3d643ca5643caf90f1dc40c6d39e8ca7828c670219cf34329ee1643c9792f10c20e3b99d8ce76a329e62329e56643ce5643c4f93f18c21e31942c6732f19cf4d643cbdc878e690f14c24e3e946c6339d8ce711329e49643c03c978ee24e3b9968ce732329e67c978cac8789a92f18c23e3194ac6733f194f3b329e5bc87892643c4f90f17421e39941c6338a8c671019cfdd643c2f93f15c4fc6f33c194f0f329e1a329e87c9781e20e3b9988ce736329eabc8784e20e32922e3e944c6f31419cf4c329e6a329ec9643c95643c7dc9786e24e3e949c6339b8ce731329eee643c23c8781e24e35940c6730719cf35643c5792f13c43c6d39a8ca70d194f47329e59643c05043c89e0c877ff13f0ff79609377d45f07db329d5f04b626161f4d757e29d80a755ed6715c989e6b7be4ba512757efe5a3af24cc8bbf22e05846c2338b8ca723194f1b329ed6643ccf90f15c49c6730d19cf1d643c0bc8781e24e31941c6d39d8ce731329ed9643c3dc9786e24e3e94bc65349c633998ca79a8c672619cf53643c9dc8788ac8784e20e3b98a8ce736329e8bc9781e20e379988ca7868ca70719cff3643cd793f1bc4cc6733719cf20329e51643c33c878ba90f13c41c69324e3b9858ca71d19cffd643c43c978c691f13425e32923e379968ce732329e6bc978ee24e31948c633898ce711329ee9643cddc8782692f1cc21e3e945c6731319cfbd643c43c878c690f13c4dc6534ec6d38a8ca7988ce76a329edbc9780690f15c4ac6339c8c671a19cf04329e0a329ef6643c3790f1bc42c6534ac6730f19cf60329ed1643c9dc978ae20e379928ca70f19cfad643cf3c878fa93f10c23e3994ac6339e8ca70319cf73643cd791f1bc40c6731719cf43643c23c978ba92f13c4ec633978ca73719cfcd643cfdc878aac878a690f18ccd118f7ab75dde9d0c800ba724e49702cf3c073c8eea598adf35f82ec6f52aad961b5a2d30b42a86324b40bfe50ef42b00bfb26e995f0e3c727e24acf84d85174818c536cf314f02ea2c53a67d6039f0b8d8271dd53315ab2b8c3abd60d15dca60acae70504fdbbe23f32b80e7659d17d604947b9984516c4b1df324a0ce32658ad515c0e362df7154cf54acae34eaf4b245772983b1bad2413d6dfb8eccaf049e57745e581350ee151246b12d77cb539e803acb94295657028f8b7dc7513d53b1bacaa8d32b16dda50cc6ea2a07f5b4ed3b32bf0ab68367f6cc3666c523fd6d853501e52691308a6d85539ef2d204d459a64cedd82ae071d1ce3bd23dd58ead36ea34c9a2bb94c1585deda09eb67d47e6575b7c9704f16ab1a60e5aacb1f0acc9b116e22f5be6250d90d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398a994167c523e3df096b02ca4d266114db4ab73ca9f7822607874f05c67c12f26b806795037d1cd533d5877cad51a7c916dda50cee5f6b1dd4d3b6efc8fc5ad80ed930af6e80cc5ee7fa312b9e293a2fac0928378584516cabdcf2a4dab129c1e153a6766c2df0b868e71dd533d58ead33ea34c5a2bb94c1fd6b9d837adaf61d995f07dbc1337b661bb3e299aaf3c29a8072534918c5b6c6294f59eafdc6a9c1e153a6766c1df0b868e71de99e6ac7d61b759a6ad15dca60acae77504fdbbe23f3eb613b64c3bcba01327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f14cd379614d40b969248c625beb94a763eab9c3b4e0f029d37387f5c0e3e2b98c23dd53cf1d3618759a66d15dcae0feb5c1413d6dfb8ecc6f80edd0d899573740661f1bb961f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e6286686d8503cd3755e5813506e3a09a3d8d6b9e5497df7607a70f894a9dfce06e059ef401f47f54cf5dbd968d469ba45772983fbd74607f5b4ed3b32bf11b68367f6cc3666c53343e7853501e56690308a6dbd5b9e543b3623387ccad48e6d041e17edbca37aa6dab14d469d665874973218ab9b1cd4d3b6efc8fc26d80e9ed933db9815cf4c9d17d604949b49c228b60d6e7952edd8cce0f029533bb609785cb4f38eea996ac7361b759a69d15dca60ac6e76504fdbbe23f39b613b7866cf6c63563cb3745e5813506e1609a3d8363ae649409d65cad48e6d061e17edbca37aa6dab12d469d665974973218ab5b1cd4d3b6efc8fc16e099adf3c29a8072b34918c5b6c9314f02ea2c53a658dd023c2ef61d47f54cc5ea07469d665b74973218ab1f38a8a76ddf91f90f80678ece0b6b02cacd216114db66c73c09a8b34c9962f503e071b1ef38aa672a56b71a759a63d15dca60ac6e75504fdbbe23f35b8167aece0b6b02cacd2561141bb663731df114193c45162d8e956fa5450f9d3f41ff26e0ff3d80d155db32d76094798c71b115e540b356064f2b43b363e95b6951017935e1f6aa004686edd52a079ab53178da189a1d4bdf4a8b9e3adf5affe2f6ea098c0cdbab0df038689fcb13068f9a321dbbb73ad6c7513d53c7ee6d815d773c0e49193c766f73504fdbb984cc6f83ede0993db38d59f1f4d579614d40b9be248c62c373feedf1f394270c1e35656ac7b63bd6c7513d53edd88ec0aefb76d05dca60acee7050cf02f02beb96f91db01db2615edd0099bdcef563563cfd745e581350ae1f09a3d8b601cfcef879ca13068f9a32b5633b1debe3a89ea9766c5760d77d27e82e6570ffdae5a09e05e057d62df3bb603b64c3bcba01327b9debc7ac78faebbcb026a05c7f1246b1ed009eddb1f3a4c77c411e35656ac7763bd6c74d3dd3edd89ec0aefb6ed05dcae0feb5c7413d0bc0afac5be6f7c076f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7806e8bcb026a0dc001246b1ed029e0f63e7493f77401e35657aeef0a1637ddcd433fddc616f60d7fd43d05dca60acee7550cf02f02beb96f9bdb01d3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed93373332b9e813a2fac0928379084516c7b80e7a3f879ca13068f9a323d77f8c8b13e8eea997aeeb02fb0ebfe11e82e653056f739a86701f89575cbfc3ed80efb3cb367b6302b9e413a2fac0928378884516c7b81677fec3ce9e7a7c8a3a64cedd87ec7fab8a967ba1d3b10d875df0fba4b198cd5030eea59007e65dd327f00b64336ccab1b20b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75ce1f9d154fa5ce0b6b02ca5592308a6d1ff07c1c3b4fc7d284c1a3a602633e09f98f1debe3a69ee9e70e0703bbee1f83ee5206f7af830eea59007e65dd327f10b64363675edd00997d6ce486d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f154e9bcb026a05c1509a3d80e00cf27f1f394270c1e351518f349c87fe2581f47f54cf5db3914d875ff04749732b87f1d7250cf02f02beb96f943b01d3cb367b6312b9e613a2fac0928378c84516c0781e753073c0983474d99dab14f1debe3a89ea976ecb3c0aefba7a0bb94c158fdcc413d0bc0afac5be63f039ee13a2fac0928379c84516c8780c745ac2a9e228347e63f25f0adb4a8d6f913f42f6eaf6a6064d85e4539d0ac95c1d3cad0ec58fa565a8c81bc9a707b8d014686edd52a079ab53178da189a1d4bdf4a8bb13adf5affe2f61a0b8c0cdbab4d0e343b96ede1b1dcb78f659c7acd8f9de605c750f38263a87981d79c4a7307c797323c9605c0805312f29f01cfe7f1f3a4ee717d9605cfe7c0f3c3f8793a38aa67a95aef8f803daef52aad7e6c68f599a155319441861f3bd0af00fccaba655efc7966cf1cc58ce7b6c29a80729f92308a4dda2057ed86aafb157a5db2fe66613a7472ad5f17cf1ef0be6b33bd5ee1107f8550e6fe92dab29f6bb622f8bf6c37559f8386cdd1fbc01d6ccfc0645efc1505b9bb0f9ae9be2c6ae1e2d94db6c7fd83169eefe2e329c5fd1c7d1d7054f76c9ea31db0f0c458f70e51cf10f7c75ff754fbd15eaf4bd6aff6d12f4e76aa7939ee7bd27eb437ea5c08653a95d496fd06da0f5b5be17adf94737273df6c12d4b667c255a2ede6f395efb45dca7d02e5b1cde9a17f71ffec017575d52e46dd63c276d16cbb5d6a6f3ee3337d17832e9f906a667b4e813a5658b82b08b8311e73b99fc9ba6dcfc82a0c1dd934c36dfd8945c79e16ee9e04dc8cfb754f434736cd8eb65ff7b570f725e066dcaffb1a3ab26976b4fdba9f85bb1f0137e37eddcfd0914db3a3edd7fd2ddcfd09b819f7ebfe868e6c9a1d6dbf1e60e11e40c0cdb85f0f307464d3ec68fbf5400bf740026ec6fd7aa0a1239b6647dbaf0759b807117033eed78382c37564d3ec68fb75a585bb92809b71bfae347464d3ec68fb759585bb8a809b71bfae327464d3ec68fbf5300bf730026ec6fd7a98a1239b6647dbaf875bb887137033eed775edb7cfba5f575bb8ab09b819f7eb6a434736cd8eb65f8fb1708f21e066dcafc7183ab26976b4fd7aac857b2c0137e37e3dd6d0914d33db7eede8bdbcb26cdf133ce4549ff478cd87b2e0f918785cc494a3382875d4cf25d53775bfa1d521432b1c07e300e8e7a02f4cc6f7fbc59f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66fcc6213e5f91729f90308a0d9f49b9b8cfafea7ea55e97acbf5998ba9d5aebf740ec7ecb4a0b0c7f49e0107f8550a6c979b5657b6ab6a2e0c8ed86e35ae3b6dc177b1dd2dbd28c7f99177f45509ffdc0e3e0fdfc14cf0183e780450b7cef341edf6543dc685c56aabebfd332a8ddcefb8cfaa0a61fc5eeff704d0b0c4d3f72ec3b111cbe3d8501a724e491c7c5b36147f54cb5057b8d3a991a1743998ba19e7b1dd4b300fccaba657e2ff0c884cfe45dc56060f004167d646a42c65345c6d38f8ce742329e9bc9784e27e3e94dc6f338194f57329e96643c23c9781e22e3b98b8ce73c329eebc87872710e9e0dcf73643c1dc8784e22e3194fc65348c6338c8ce720194f7f329e1f90f1dc4ac6733919cf99643c7dc8789e24e3e94cc67305194f828c673419cf60329e7bc8784ac978da92f1dc40c6730a194f05194f7b329e09643ccdc9788693f15c4ac633808ce712329edbc978ce26e3b99a8ce769329e72329e62329e56643c63c8788690f1dc4bc6730119cf4d643ca791f1f422e39948c6d38d8ca70519cf23643c03c978ee24e339978ce75a329ecbc8789e25e32923e339918c671c194f53329ea1643cf793f1b423e3b9888ce716329e33c87892643c4f90f17421e3399e8c671419cf20329ebbc9784ac878ae27e3799e8ca70719cfc9643c35643ccdc8781e26e379808ce762329edbc878ce22e3b98a8ce729329e4e643c2790f11491f15493f15492f1f425e3399f8ce746329e53c9787a92f13c46c6d39d8ce738329e11643c0f92f1dc41c6730e19cf35643c5792f1b426e36943c6f30c194f47329e02029e4470e4b79812f0ff0360936f067d0cb62696f5c9735829af8e8b53db1eb9ee2696757f6461409d3e84ba2475bef4fb4d299dd05712e6c55f11707c44c2d3918ce719329e36643cadc978ae24e3b9868ce71c329e3bc8781e24e31941c6731c194f77329ec7c8787a92f19c4ac6732319cff9643c7dc9782ac978aac9788ac8784e20e3e944c6f31419cf55643c6791f1dc46c6733119cf03643c0f93f13423e3a921e339998ca70719cff3643cd793f19490f1dc4dc633888c671419cff1643c5dc8789e20e34992f19c41c6730b19cf45643cedc878ee27e3194ac6d3948c671c19cf89643c65643ccf92f15c46c6732d19cfb9643c7792f10c24e379848ca705194f37329e89643cbdc8784e23e3b9898ce702329e7bc9788690f18c21e36945c6534cc6534ec6f33419cfd5643c6793f1dc4ec6730919cf00329e4bc9788693f13427e39940c6d39e8ca7828ce714329e1bc878da92f19492f1dc43c633988c6734194f828ce70a329ece643c4f92f1f421e339938ce772329e5bc9787e40c6d39f8ce72019cf30329e42329ef1643c2791f17420e3798e8c673f19cf75643ce791f1dc45c6f31019cf48329e96643c5dc9781e27e3e94dc6733a19cfcd643c1792f1f423e3a922e36942c633d6e0c1ffab77c3e4fc48be1d5408ff1fa83b97b7d6eb9232f28e92bad7b5c7b0a9faee7654df3d41ed9484f9dd505f61df033c7b1cf17c68f098be8b205f019aed326c8a71a723c65d06a3ccef0446d16f17f0ec72c4b3dbe0317d1741be2768b6c3b029c6ed8e1877188c32bf1d1845bf1dc0b3c311cf4e83c7f45d04f9bea0d936c3a618b73a62dc6630cafc566014fdb601cf36473cdb0d1ed37711e4fb81661f1836c5b8c511e30706a3cc6f0146d1ef03e0f9c011cf5683c7f45d04f9fea0d966c3a618373962dc6c30cafc266014fd3603cf66473c5b0c1ed37711e40780661b0d9b62dce08871a3c128f31b8051f4db083c1b1df16c32784cdf45901f089aad376c8a719d23c6f506a3ccaf0346d16f3df0ac77c4b3c1e0317d17417e1068b6d6b029c6358e18d71a8c32bf061845bfb5c0b3d611cf3a83c7f45d04f94ad06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4878166cb0d9b625ce68871b9c128f3cb8051f45b0e3ccb1df1ac30784cdf45901f0e9a2d356c8a718923c6a506a3cc2f0146d16f29f02c75c4b3cce0317d1741be1a345b6cd814e322478c8b0d46995f048ca2df62e059ec886789c163fa2e82fc18d06ca161538c0b1c312e3418657e01308a7e0b8167a1239e45068fe9bb08f26341b3f9864d31ce73c438df6094f979c028facd079ef98e7816183ca6ef22c8df0d36e1ed0eb6f775be1bd8ded3f9ae607b57e7bb80ed1d9def0cb6b775be13d8ded2f972b0bda9f31dc1f686ce9781ed759def00b6d774be17d85ed5f9de609babf349b0cdd1f93e609badf357816d96ce5f0db6993a7f0dd866e8fcb5609baef3d7816d9ace5f0fb6a93a7f03d8a6e8fc8d609bacf337816d92cedf0cb65774fe16b0bdacf3b782ed259dbf0d6c2feafced607b41e7ef00dba33a7f27d8eed3f9bbc07648e7ef01dba73a7f2fd83ed3f9fbc1f6439d7f006c9febfc8360fb91ce3f04b61febfc60b0fd44e78780eda73a3f146c3fd3f987c1f6739d1f01b65fe8fc2360fba5ce8f04dbaf747e14d87eadf3a3c1f61b9d1f07b6dfeafc78b0fd4ee76bc0f67b9d9f00b63fe8fc6360fba3ce4f04db9f74fe71b0fd59e79f00db5f74fe49b07da1f34f81ed4b9d7f1a6c5fe9fc3360fb5ae79f05db373aff1cd8feaaf3cf83ed6f3a8f63ddfe5de74b8278dbd96f83daa9047c8b3f55e61f3adfdc2823cb16429913750747f58c43bd8b27edb0b4cbca26edf0fb609376f83db0493bfc2ed8a41d7e076cd20ebf0d366987df029bb4c36f824ddae137c026edf0eb609376f835b0493bfc2ad8923a3f176cd20ecf019bb4c3b3c126edf02cb0493b3c136cd20ecf009bb4c3d3c126edf034b0493b3c156cd20e4f019bb4c393c126edf024b0493bfc0ad8a41d7e196cd20ebf043669875f049bb4c32f804ddae147c126edf07d6093fde55bb049db7c086cd2367f0a36699b3f039bb4cd3f049bb4cd9f834ddae61f814ddae61f834ddae69f804ddae69f824ddae69f814ddae69f834ddae65f804ddae65f824ddae65f816db4ceff1a6cd236ff066cd236ff166cd236ff0e6cd236ff1e6cd236ff016cd236ff116cd236ff096cd236ff196cd236ff056cd2367f0136699bbf049bb4cd5f814ddae6afc1266df337607b5ee7a5ad6e01367956aca6d2ef39e1383c78ce2f4cc920deb61fa724e49f83bacbd4848ce755329e2a329e7e643c1792f19c4ec6731f194f4b329ee9643c6f91f1fc958c673519cf2a329e6d643c5bc978ce23e3d94fc67312194f2119cf1c329e61643cef93f11c24e3e94fc6f303329ecbc978ce24e33944c67305194f828ce70d329ea9643c2bc9785690f17c40c6b3858ca7948ca72d19cf29643c15643cedc9789a93f1cc22e3194ec6f32e19cfa5643c03c8782e21e3399b8ca7988ca71519cf64329e31643caf91f12c27e35946c6b3998c671319cf05643c7bc9783e24e3398d8ca70519cf0c329eb7c9780692f19c4bc6339f8ce732329e13c9789a92f1cc25e3594ac6b3848c671e19cf46329e0d643cedc8782e22e3d943c6b39b8ce70c329ee3c978a691f1bc49c633888ca7848ca70719cfc9643ccdc8786693f12c26e35944c6f31e19cf7a329e75643cdf92f1ec22e3d949c6731619cf09643c45643c53c878aac9785e27e3a924e3e94bc6733e19cfa9643c3dc9788e23e39949c6b3908c670119cf3b643c6bc978d690f1ec20e3d94ec6730e19cf95643cadc978da90f14c22e32920e04900470036f97f53b07da3f307c126dfebd90fb6af757e3ed8bed2f9e7c1f68cc5d6c4c2270cdf804dde6d7e166c72fff36bb0c93b015f814dceabc4bf9a9fdbf648fe26b08cf8696ae1477f5f59b8248fdb5b964906f16e6ff4950c8efc9e5211703c4bc233898ca70d194f6b329e2bc978ce21e3d94ec6b3838c670d19cf5a329e77c8781690f12c24e39949c6731c194f4f329e53c978ce27e3e94bc65349c6f33a194f3519cf14329e22329e13c878ce22e3d949c6b38b8ce75b329e75643cebc978de23e35944c6b3988c6736194f33329e93c9787a90f19490f10c22e379938c671a19cff1643c6790f1ec26e3d943c67311194f3b329e0d643c1bc978e691f12c21e3594ac633978ca72919cf89643c9791f1cc27e339978c672019cfdb643c33c8785a90f19c46c6f32119cf5e329e0bc8783691f16c26e35946c6b39c8ce735329e31643c93c9785a91f11493f19c4dc6730919cf00329e4bc978de25e3194ec6338b8ca739194f7b329e0a329e53c878da92f19492f16c21e3f9808c670519cf4a329ea9643c6f90f124c878ae20e33944c6732619cfe5643c3f20e3e94fc673908ce77d329e61643c73c8780ac9784e22e3d94fc6731e19cf56329e6d643cabc8785693f1fc958ce72d329ee9643c2dc978ee23e3399d8ce742329e7e643c55643caf92f13421e3196be199ef8847faaec8ba657e7e23f7bddbf0bd3b4f7cef347cefcc13dfdb0ddfdbf3c4f756c3f7d63cf1bdc5f0bd254f7c6f327c6fca13df1b0cdf1bf2c4f73ac3f7ba3cf1bdc6f0bd264f7caf327cafca13df2b0cdf2bf2c4f732c3f7b23cf1bdc4f0bd244f7c2f327c2fca13df0b0cdf0bf2c437f3f5b7eaa72cdf82d8ab7f13f07f1c3f6ebf23c6f906a3ccef0746b1e1f8ef3d1cf1445dbbf720f0adb490be8bf20e7d02fe5f018cae62aa87c128f3b698c2f1462b1cf144dd73a820f0adb4906f39ca37b112f07f1c3fc5554c55188c326f8b291cffaba7239ea87b253d097c2b2de45b8ef20de004fc1fc7277215533d0d4699b7c5148e37d1d7114fd43d9ebe04be9516f22c469e9927e0fffd80d1554cf5351865de16535b81a79f239ea87b53fd087c2b2da4ef99f4594ec0fffb03a3ab98ea6730cabc2da6b6004f7f473c51f7d4fa13f8565ac8bb51f20e6b02fe3f00185dc5547f8351e66d31b509780638e289ba173880c0b7d262a0cecb377212f0ff81c0e82aa606188c326f8ba90dc033d0114fd43dcc8104be951683745ebec19980ff0f0246573135d06094795b4cad039e418e78a2eebd0e22f0adb4a8d47919032101ffaf0446573135c86094795b4ce1786d958e78a2ee195712f8565a48df18e9339880ff5701e320478c9506a3cc0f0246b1ad029e2a473c51f7baab087c2b2da4affb4afd9b80ff0f03465731556530cabc2da65600cf30473c51f7e88711f8565a0cd779f9864702fe3f1c185dc5d4308351e66d31b50c78863be2897ab6309cc0b7d242c63e906ff225e0ff385eb6ab981a6e30cabc2da696004fb5239e4506cf228b16c7cab7d242befdb258ff26e0ff6380d1554c551b8c326f8ba945c033c6114fd4b39c3104be9516d2b773a1fe4dc0ffc702a3ab981a6330cabc2da670fce5b18e78a29e418dcd81efa8e729b9f01df56c2017bea3ee73e7c277d43ddb5cf88ebaff980bdf51f7d272e13beabe502e7c47dde3c885efa8ebf55cf88ebaf6cc85efa8eba85cf88eba26c885efa8f3db5cf88e3a57cb85efa8f30edf9efbf63c6edfc7f2dc215fdbf363790c3d96c7127f6de0af0d72e5db1f4bfcb541ae7ce7ebb5816fcf73df9ecbf55741107d3db6cc91ef25866f99c7e72c4b1cf95e64f896797c66b0c891ef05866f99c7fbdf0b1cf92e327ccbfc821cf86e65f86e9543df6d0cdf6d2cbe5d6cef4470f8f5b730e094843cc6c042073c8eea59aad6bb58afebbb18d76bbb6f63ee2fc5506631e8e7baed9075676a3b5ac4e7bb34013e64cc38659367b1ef834ddad0f7c026cfd8df059bb4f3ef804d9eefbc0d3679fef316d886ebfc21b0c97358ecff2ecfd2b783ad52e7b1dff5209ddf0a36e99784fd7da56fd916b049ff40ec672a7d3c37814dfae962ff46e96bbd016cd25f1efbd5c93b0febc026efad607faefd3abf066cf28d4aec47f4b5ceaf02db373abf126ccfe9fc0ab03dadf3f781ed4b9dff166c4fe9fc02b07da1f30bc1f6a4ce2f06db5f74fe4db0fd59e7df00db133aff3ad81ed7797c2fec4f3aff21d826ea3cbe8ff4479ddf0db6c7741edf83f983ceef04dbef75fe35b04dd0f957c156a3f373c1f63b9d9f03b6f13a3f1b6cbfd5f959601ba7f333c1f61b9d9f01b65febfc74b08dd6f96960fb95ce4f05db289d9f02b6913a3f196cbfd4f949607b44e7ff0ab65fe8fc22b035d1f9256093f105b1cf877c337319d864dc6ceccb2363098c05db713a3f066c2d74be1a6cf29db5e16093b17a87812da1f355603b41e72bc126e73a83c02663ad0c049b9c970c005b6b9def0f363987e8073619fbb02fd8e47b9e3dc126637a57804dbee3df036ca7eafc7cb0c9f866fbc126df5c3b08361947f86bb0c9b796bf01db593aff1cd864cc97a7c1768ece7f09b67375fe29b0c9f739bf005b89ce3f09b6b63aff17b09daff37f069b8c0ff604d8e49b6e8f834dc6e1fd13d8e4dbc913c176b1ceff116c97e8fc6360937154fe0036194bf2f7606ba7f313c026df90ae01db153aff3bb0c9d816e3c176a5ceff166c3286c138b075d0f9df80ad4ce77f0db68e3a3f1a6ce53aff2bb075d2f95160ebacf323c1d645e77f09b6ae3aff08d8bae9bcb4336a7f56fbf9013d9f0ce23dcffe38387cca749e2d0cc813e7796b31f0a0af7db1d7bd2c758e2c6d4113bd5e89a17de07b6fecbed3e7e71fe97515eaf5ee357c174299d6ba7150cbc931bfa95e6ebfb11cde139275cb325782fd4363ddad757d3f7254dfbd069370a30e52e664cda48e8ddb75ded1fbf0656a1f90580b40439c92901706375a9595e2b9705d783e029e7db1f3a4af7d5dc404ee5b715ffb9af744cd582b86327b41bf0f1de887fbbaac5be6c59f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66c57340e7f159b3943b40c228b67dc0e3e23e3f3e8795f5abe73acbceabf5bb2f76bf873fdf6ba6d75b6ad4b910cafc1d9e39add2791cc753b65bd4b674f09c30e3b6147f45501f7c1674c011cf3e83679f450bc997c4e6bb6c881b8dcb4a55bf15f58c7dbfa1eb018ba6aef6d77d7a5d0586a6b8bf7e6cf0e0b3d122e0fd44ff26603d9f401d1cece319e342fce1beb40f6c92ff18185d6c673c96487b20cfc3f1d9b494d96f3c178f7fdb9795ba6c37f6409d92c191f15d08650e41dbf799ce63df9003a0dbef2cff9729d3736ad14fd57957fc754e6ddf9dc099043fe87b07b0c6e4fbb0f7510a74123f622f84fc6fa13f8794133d446b6157fb88f4e9447673b98f8de58aa1cc6e4bfd9341bcf5df65f0ec3298d536f911c4d9efe0f8efaa4dda1da1d195a09194d9071aed77c4b3cfe0110ef1a7cac8f66f6e9491650ba1cc97d046a9ba483b2ff5c4be2d780c70751c135fb26e99b79d1b7f048c661d557c743bb596775fecbc0dabffd7bf417b1177ffaf7f83182a008ec0587f29ac5fb89a07d1c71629f33f8de3a88b6b0cdc96a69ea8b394f95fd00eb52f49e7b339d73f56d76d51e7fabb1df02482c3afbdd594e9f88ec7983d0e781cd5b3d476ecfad0a8533194b918eae9e03c26e37bb5bbc0b78b6d8e5ac839d45e438b4228d3b224fd2b6d47948e78adfa514eea52663d1f2cb5d445cab42aa9ad4b0bb0c7c9e472bbed803aa9f5eeb3d455ca9c5c52abcba93a9f80ed84f74d2eb2fc5fa64ced018e6bb32dfe3aa7b6ef56e04c821ff4fd01b0c6e4fbb0ef6ac8f9bef8117b21e42f2ca92d2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3dd52ff64106ffdb7193cdb0c66b54dce28a9cd4b1cb96c37b74768540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452a66349fa57b5b3094b59f3deb08bfb98f86e6900f5088cbaca8431e0e0dab01caf9da49d123fedc1be4fe745e7f686768550a66749fad7e179b7f5dea5797d87d714c26dee5bf8eec75525b5dc2aee653bedd3bf4560fb54ffb6089c5ca795dbee190a87ed9ee10d25b5ecb8ac701db2d4c5bc466e121c794ffd3ba32cde77cbb41cfa52d3416319a5efa716a67d869f16b06c6cef6a74282d8de23f087c1f1bcc365d653fc098dba7f3e6be82d7c652e6be92f4afb4496659b5edbf38b9561fd98ea21db62718931f036352e74bbfdf94dae70e1af59779f1a718e57ecf41e089bfed4abfaf94cd7de0fdc0e3a26d77d44697e231b6456cebed56693bfe7f6c6895c3e7b5d663bef9ccbd85918fc7775995edfe934d8bbd161e57cf51a2b4d86bf11d9f169d87d8da399b16b9ecfb10a5c58716df316a310cef7b66d2628f85c7c5bda84c5aecb1f88e4f8b2ea5999e6ba016bb2d3caeee3d446921feb265fe9080b985918fc77779a5ed3e994d8b5d161e57d7cd515aecb2f88e4f8b0e9df11e5d262d765a78e2bf3f97598b9d16dff169d1b51bdec3cba4c50e0b8fab67ba515aecb0f88e312e86daeee5d8b4d86ee1d99e632db65b7cc7787ed8d976afcda6c5360b8f83fbae19b5d866f11da31683f1be6b262db65a78b6e6588bad16dff16951d9c9764fd8a6c507161e57f784a3b4f8c0e23b3e2d067755beb7d4418b2d169e2d39d6628bc5778cd750a9b8d85c072d365b7836e7588bcd16dff16951953ad7da54072d36597836e5588b4d16dff169519a3aa66eac83161b2d3c1b73acc5468bef18e322753db9a10e5a6cb0f06cc8b1161b2cbe633c8ea4e2627d1db4586fe1599f632dd65b7cc7a7c5b0d4fda77575d0629d85675d8eb55867f11de33d97545cacad83166b2d3c6b73acc55a8beff8b4e8983aa6aea983166b2c3c6b72acc51a8beff8b4189a7a26b6ba0e5aacb6f0acceb116ab2dbe633cef4cb517abeaa0c52a0bcfaa1c6bb1cae23bc6f3ced4fd8b9575d062a58567658eb55869f11d63db993aef5c51072d56587856e4588b1516df319e77a6b4585e072d965b7896e7588be516df319e77a68e23cbeaa0c5320b8fabf144a2b45866f11d635ca4dacea575d062a98567698eb5586af11de37dad54dbb9a40e5a2cb1f0b81aaf214a8b2516df315e8fa4eef12dae83168b2d3c8b73acc5628bef189f15a5cec117d5418b45169e4539d66211f8de1fbbef747f6ef1217db1ae30b4288432cddba67fa52f56948eb20eec57867559187b5dd2fdca1644d46521d445ca9c007569113819efa7dc515d5331331feaa4d6fb89a5ae52a64ddb5a5d4ed2f9046c9343a0dbf996ffcb5460cc27212ffaa93abf1f7f9d53b1fa1e7026c10ffa7e175863f2dd017d17e8247ec45e08f9b66d6bcb4a39d143b41676b58fccd3796437975b642c570c65e659ea9f0ce2adfffb06cffb0673eabd0788338923376d579a695e84465780465206fbec7de288c7ec43281ce24f9591eddfdc2823cb164299cba08dc27ea552cf447064bf49476d5907649775cbbcf82b06db7e6034eba8e2e310f4fd94b122641c09659371213ac27aba183655d7ae8eea2abe64dd32df1518659c8a2eb9672cab2b63678351f17477a0198ebd2153a6e34577e0e9e680c7513d53c7a11e469dba1a752a8632f86e630f07f52c00bfb26e99ef01be5d6c73d4428ec9971a5a1442991b8cf3c7281d651d2a7ebb58ead2cb715d64ddd22ef5ca81ef0ac37727c37722387c3b0741e6fdab02987b3a6056ebed1dff7a4bf1bc4d624afc74823af5010de2aa13ae4bcef3fa18da1642fe4138cf937252568e5fc2ae6259b625b29bcb7537962b8632bd2cf54f06f1d6bfb7c1d3db6056dbe42e38b773b03fa462a097c121f39d40bbde11daf502eda40c1effba38d2aea7c1d3d3f0ad78e41ca707d8e45c41f813f0ff8e39e036dbbd1e166eb1e13871b6739dcef133663cd7e90c8c62eb093c158e3433b7f5a5863e785c6e6e9491650ba1cc383836262c65d57e7771416dbd9a6a7b6cef8ee936bdb903bd709cc600f4090c0d03d04bead9cc01cff141ed588de36baac70d7e78e85d43d38f1e05add0c0c4df024b359a800df34d2db620387c48ca42b0c99094cdc0d6c4900587c294f232a49d0bb9500f5977a1c1d90258e2f48dc379ca9429748e031e17a1ac424786f4d4a173dfb8113543313e9a199cf5891df5bfa619ca45adcbd57630f78924cc9b3158e8c87f53a86f12e6c59fda3632b4ea98c1431eed33eee109a3868eae198f42993b36e60b82c33780f91b25b8ab9d0e03002b8c8d4333a35ed860c8ff64c31c1f3f67398e996b6a13803f998e07dd5a3ad04dad5fc6be1d3278e4c83b26548e1c31e4ba09a387d48ca81e8d5bb385a15cd49696ff37079bad89c7b26ac2660b973dce62b34d38ca700bb0c991ab25d884e778b03585bc9437b78c9370bd10d62fbb94fa9f12a799aef871416d08c8e158b5ab6aff55a772ea13b2ea54480d6dac36a71aba58dd31544313abafd8a9a187d550c36a68e13383f4d0c16aa8e07382f450c0ea6b1725417a68dff383daa17bd57408382f0ad243f3aadb349704e9d32e35b46ebb203d74aeba75d93e487fe64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a4b7d6ba4f98ae0ad3d561ba264cd786e9ba305d1fa61bc27463986e0ad3cd61ba254cb786e9b630dd1ea63bc2746798ee0ad3dd61ba27480fef7c6f901e7e5d0dff7c7f901e1afa81203d6cf483417a48e98782f470d38383f450d44382f430d54383f410d60f07e9e1ad4704e9a1731f0dd243edaa21784707e9e1b0d530d96af86c35f4af1a26580d29ac861a564315ab618dd510c86a68e42783f430cc6ac8e667c2f46c901ed2f9f930bd10a617c3f452985e0ed32b417a7870356cf894203dccb81a7e7c7a901eae7c66901ede5c0d7bae864357c3a4abe1d3d5b0ea6a987735fcbb1a16fead30bd1da67782f42309f528463da250b7ffd56330758b7a6190be75be38483fe2568ffc551708d5254475915919a4bb50a92e65aa8b9dea72a8ba60aa2ea9aa8baeeab2acba70ab2eedaa8bbf7ae541bd02a25e8951af08a957a6d42b64ea953af58aa17a4d54bd76a95e2356af55ef0bd2b7c50f04e947a5ea76b87a34a0e251ddbeff2c4c3f0cd3e761fa51987e1ca69f84e9a761fa59987e1ea4873056c31dabe192d5d0ca6ac865353cb31aca590d05ad8688fe63901e7a5a0d5dfd97203dfcf59761fa2a480fc1fd4d901e7efd6f61fa364c7f0fd33fc2f4cf30fd2ba81d4a1b1b8b33750ba3af5282c1353543478da929a9a92e19356164cd8831239f289938a2667849f56343c70d1b593d1117fe5c2f2ce380f719376ef013252346570d7dbca47a424d49f5b092caea09a3ab0e3b50ff532f74f6911e075755453bfbf7ef43fa7feae9b4a56efb6484f51b33d7ed84a6f510e4c4fa2cd4b969fd2af4a43e4ac9e5ecdde973dd92f123ab6b4a4a4b46877fc3836bf5c4a155ed4bf07fe34391c7d7948caf193caea664d8b8ea51251ddae37a271d5f8f4a1424dcc0b439b37ee2b4d2df52aa5788ed3baf1e0a7c715efd48ffdbf721fd1ff574daa2a41e352caecf426525f523ac28899465fc84ca9a718387d4442fdce7fb2c7c7d7daa796f3dabd9ac6d3d9c25eab3d0a56deb47787d7d9c8dcdc259f0ff015dc8f1201c4f0600", "isInternal": false }, { "selector": { "value": 2603445359 }, - "bytecode": "0x1f8b08000000000000ffed9d77701cc795c6679118164b10cc99902c538ce06291c104e64c9992ac1c98409116495024942ccb922cc939e76c399de59cf359ce392739e7ecf2d5dd3f57bebaab725df76c3fe34373668d5dcd03df60df543d6ccfdbde79bffee64dcf6cf7ec201314973f1bcbb872adb1c705e72ef47ebf7bcd3fb6a52dc16de539393329e1ac4909676d4a38eb52c2599f12ce8694704e4809e7c494704e4a9033037c5cbc9353c69b4d196f63908ebccda584734a4a389b52c23935259ccd29e19c9612cee929e19c9112ce9929e19c9512ced929e19c9312ceb929e19c9712cef929e15c9012ce8529e15c9412cec529e16c4909e70529e1bc3041ce15c04963e417b9d7c7bbd725eef562f7bad4bd2e73afcb5d1bebdcbadde64a63ab8cb57aefadb6ccc6ec6079c17bafdd5887b14e635deebd16f75eb7b11e63bdc6fa8cad31b6d6d83a63eb8d6d709a6c34b6c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd825c69e606cbfb14b8d5d66ec72634f347685c772a5b1ab8c5d6dec1a63d71abbced8f5c66e3076a3b103c60e1a3b64ecb0b123c6068c1d357693b163c68e1b7b92b19b8d9d3076d2d8296383c64e1bbbc5d81963678d0d19bbd5d86d9e66b71bbbc3d89dc69eec71de65ec29c6ee36f65463f718bbd7d87dc69e66ec7e630f187bd0d8d38d3dc3d8338d3dcbd8b38d3dc7d8738d3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab1d0b1d08af31f65a63af33f67a636f30f690b1371a7b93b1371b7b8bb1b71afb37636f33f6b0b1b71b7b87b1771a7b97b1771b7b8fb1f71a7b9fb1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb77639f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb92b12f1bfb8ab1af1afb9aa7f9d78d7dc3d8378d7dcbf9beed5ebfe3ead231ff5df7fa3df7fa7df7fa03f7fa43affea3defa8fbcf51fbbd79fb8d79fbad79fb9d79fbbd75fb8d75fbad75fb9d75fbbd7dfb8d7dfbad7dfb9d7dfbbd73fb8d73fbad73fb9573bafd63eb3589e180c2ffd41427d52c740af1d5727b1fd793b3b2754ebdea3d716e7af73ebf49a71fe7ab75eeff91bdc7a83b79d896e7da2e79fe2d6a778fea96e7daae79fe6d6a779fe196e7d86e7bfc0ad5f00feac7bafd8b0e28bf5d53a57067c949f35e0ab77be5af035d0e6c037c1f9eac147fbb7017c939c6f02f8263bdf44f0659d6f126969acd1f9fa83a472257fd06e3797f476dd5cc494e4790fd9ed3631f14e4d9ef7b0dd6e3303afcd8f696e5b39c89be9ce37057c339caf097cae0bfae731677db39caf197cb39d6f1af8e638df74f0cd75be19e09be77c33c137dff966816f81f3cd06df42e79b03be45ce37177c8b9d6f1ef85a9c6f3ef82e70be05e0bbd0f916828ffacb45e0bbc8f916838faeed5ac047d77917808faef92e743edb4f4ccc403ce7a73e2a8c47fd33f81e4f7d33f89650bf0cbe8ba94f06df52884dbe65d0af906fb9f3511f65dfeb73e5fe20a963a2101ec36b92deaed9b2ddeebae4b71bce81ad0f86b5ee87386b40ab0dae9ce0fd216d189bae63280ef9eba0bc13ea523dd283ce33c46ecf276b5d794389cff5799fcb419db511edef0f926dff3a8f679dc75c0fed67cad9a39ab3a35ecaced92ba1ae9f7b74cd331e73760f70249fb3eded9ab3a35ecaced901a8ebe71e5df78ec79cbd06381872b69b27670b79cdd9e238581044e71e7df7198f397b0c3892cfd94ecdd9d12f65e7ec7d50d7cf3dfafe3b1e73f636e0483e67bbbbf5da60d44bd939fb02a8ebe71e8dc58cc79c7d00381872f690f6b3a35ecaced9d7415d3ff7685c703ce6ec8b8123f99ced65cad976cdd9a038a71904d1b94763d4e331671f028ee473f6b08ecf8e7e293b673f0e75fddca3f992f198b3ef71653bcff06d37cfb0007cdf71be85c09b7c6e1f6963caed36cdede2bd1e41109da33477371e73fb1157b679fc3db8f7807cdfa7fb12c0f703e7bb107c3ff4eed9603a06baf418187d9bca3d067e0675fd5ca679e4f1780c7c07381872b65b7376f46d2a3767ff0275fddca37b1ac663cefe12381872b6477376f46d2a3767ff0e75fddc5beacae33167ffe6caf67ae127ee7a6139f87eea7c2bc0f733e75b09be9f3bdf2af0fdc2f95ac1f74be75b0dbe5f395f1e7cbf76be36f0fdc6f90ae0fbadf3b583ef77ced701bedf3b5f27f8fee07c5de0fba3f37583ef4fced703be3f3b5faff3d9f92ebaf7ea4bce67f72d69d41f24bb6fe91e4bda36adaf1c83d84d5eeca6318cddecc56e8e88bd8a21761662d092f1d6fba1bc8a97279f031e8cb53af958edb6edadc1e8dbbe1a78f20c6dcf428cd1f0e481a72d799ef0fc59487ebbe13e6ef534cd42ac5668573b43bb32108bb64deb142f073eecbfdb23183b92672c6420166d9bd63b80917c783ea1f33a1d3ff67cb82433cccb702c85d744148f9eff441cabc14f751e9d31ccb6dcb135c2fb786e6df37c4c7919e605c5a26dd33ac56b84f6b48d3d6361b48c798f91ab8fc8402cdab61f1b8ff75563afd9a8f66b0e7ce7a14f2a54da273502db585ca7c4ed6b29b139ce571988417d1b695e003fd599e57e9060fbb6edd0ef321c7f8572afdfb03f483e8f0b793cae47c3d30e3c1cc73ed3f19ac7f3fe3f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fc26d55b2984917c05e0e118e70f9f01e5b645dbb7f33a3f86799de4e72d0a799cb3a47b0c97796dae833a7fcd0cd7fd39cca7fb738338a7b99257bb51dd67d1189c3b17cb398718370f1c357fd99258ecc261aef936fb0c15fb1cb2564fd795119a32dca73242d38ca729dea7b8c2e3b1793ab776988d63eeafdcb948d48aca49ceede13d06bcfba5d87f502ed40423fb0f3ccf74251e7be41c26cd977779b1eba0ceff6486f70ddd8b4affebcebfe7c9d6e9f6b64d9f5906fe6e6fdb4deeb3c451ef6dbf153e4b75fe0ffad4d7d704ffd48ce3fe0fec9703682b2efd50c679f3e4cfc3c579fcf632783a8187a39f61badec8e33190f43c7eb7a755d4750cd5e902fdba19f48bba16a5758aa7cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccf299f1b7a2c49a857a05218c6374ef43389f41cf7fa1eddb799de7d60cc7e59e87a339a7e55e9beba0ce376b86ebbed0951b8373ef7788db970cf37925f725c56b84f6e05c10d7efb93b3c9e8e082da8dc9258ece23c7ef21a0fcfe3b77bba162234e53a5e718e1535c5e3b5cde3c1b9d1c6e0dc7b4bb2b09db1b877282e2f281e1e4b1de0a332fe3e9a633fe3b9c4bfaf87e2e1fcf5c34edba6806bdf17f29cfd460fb4a93f3837bfeba0cebba1ef7baf2be33d1c78efc82311efd3526a9e9af46379965dbe38efbb0638fb210ec65e0bac09c56ec3d819671487fc7550fe54cd705daa477a90d6c46e8f117a2618b2fb9f6bf33e97833abd11edef0f926d7f9fc7d3e731db7df201c8b347e0fccfd527f5c668b40c34a23a781dc475eef4efaff4ef2bc47eb4c1ab439fad833a5f823e2aeefed1a87300f7798cb61d751ef3cf0ba3b9cfb3daefd37a14fa8ba4efd37a147208efd30abced2f87ed135743107f6ea13a3ff5b6ef5f93d367f03e30aaf30be82f9adc3d8b8dc1b9d7df78cfd4587cbf8abb4f9ae2e1750dbd379ab65be61ea8df9f2033e604b2e07502d5f993b7cfba63b857477cf6af319f25ad56b9327e7ff1f5b33af4c267fa13d1a178ccf7796da1bcee85b6509dfff2ae0193bf6e295e0326dfd691d724d40f7444b495eafc371c6b7f876b3cda4ff8bda3a1f6dcf76929750d48fad9368ff5f38131b684e703d7d70ed7f59ff34b5a97fb7ce02eef73129f0ffcbf90670d701f3a575fbd3646a3e5a011d5c1df06d179049fe51b35d671bebe4fe3b514f6cf4da029d7ef0efcf39f3fae16758db0dcd318af116638e626a7b35fd71f2fa4f36592f70de36f255a212efe56a29549cf3ce8d60feb785d703e63e79962c73d733a3f06b1e39e393d16b19bbdd8cd63185b3557cd2569cef04ce4f0f767f8cc52bb94ba2e25861c7cae26058cb52960ac4b01637d0a181b52c03821058c1353c03829058c9353c09805c6f3796e67d0a750a93e5cfbabd4b506c65ec5a44539ffbf83f97fa994bcf6c1d80cdfe9422d5605a3d702bfe7713cfba1dcfff5420cf8bf0ba6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a185b52c078410a182f4c01e3e352c078510a181f9f02c625ca9808e30a5ec642a58c9687e37ffe3d96ff39c6c0938fbae794e9fed9b2ffdf1af3f349db2a7d6e1cde5bc2fb3fe11edbb3ed38ee1d29f7d976a5fedf2a1363a15246ae7b81f0bea3d1f044dd1fd4c6cb58a89491ebf72ff81bbdd1f07481669d119a3130162a65e4ba57aedc7b39f19efeae08cd18180b9532e27dd509f2849a7597c1d3039a754768c6c058a89491ebbee42cc4180d4f2f68d613a1190363a15246a6dfb6859af596c183bf01eb8dd08c81b15029a3e559c3a4595f193c6b40b3be08cd2431224fd2cfc9ee8b88c5f19bc172db4e0cc83829058c9353c088f74970f45fa5ee93e8e3d5a750a93e5cfbabd47d12189be1f731a116f87b887fa5c53a5e9e92f74960ecf54c5ae0ef55fe9516eb8187e3f7335988311a1e62c8c1e7a6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a18f1bb2ac3b562c9ef2febc779ecb8ef2ae33d76dcf792f11e5bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73c97143b0d63fcca38fe1891a725399e3cb61d63f50b687b7f044f86a9ed186ba380b61343da1837a480714d0a1855c7e23d8895305a9e4d4c3c1bcbe0d9043c9b99783695c1b31978b624cf13e6d4e632788821079f5b9302c60d2960541d5547498caa63f5e8a88ccaa88cca783e18d3d0872b632af2b15029a3e5d99a3c4fa8d9963278b68266f4b9b61430f6a78071032f63a15246cbb32d799e50b3ad65f06c03cde8736dbc8c854a192dcff6e47942cdb695c1b31d34db16a1190363a15246cbb323799e50b3ed65f0ec00cdb64768c6c058a894d1f2ec4c9e27d46c47193c3b41b31d119a3130162a65b43cbb92e70935db5906cf2ed06c6784660c8c854a192dcfeee47942cd7695c1b31b34db15a1190363a15246cbb327799e50b3dd65f0ec01cd764768c6c058a894d1f2ec4d9e27d46c4f193c7b41b33d119a49655c9302c60d296064d6b15029a3e5d9c7c4b3b70c9e7dc0730913cfbe32782e019e2724cf13e6d42565f010430e3eb726058c1b52c0a83aaa8e921855c7ead15119955119cb63ec4f01a3ee6b6594cac8f0fdaae46f912e19e7b19bbcd84d55123beeb748e33db6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae792e29f6fee46317ca7dc6cc7ee0e178e60d533bf376bb97ba6dfd2341fdac5697795a5de26995833a97827e9731e89781b8b46d5aa778e5325f2c80992976618ad9c624683fc5d8e0e961e35fced4f6b8befef2711e3baeaf1fefb1e3fafaf11e5bf35cf3bc1a626b9e6b9e57436ccd73cd7329b1b15c1f0c5fb7d3f34fed369ee8ca756e1d59c94f75ae9a507c6d0af418e288adc7909e2baa21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad792e2fcf311f6ac68027f07882123cfb84f12c12c6334718cf34613ceb85f14c12c6b34c184fad309e9dc278b609e3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67a3309ec9c278ea84f1e485f12c11c6334f18cf58fc9ea11c9e19c2785608e3c90ae3d9248ca75e18cf6a613cbb84f1f409e3d92e8c67a9309e5e613c5dc278da85f16c11c6d32a8c67be309e99c2781a85f1e484f13408e359258c678f309eb5c2781608e399258c678a309e26613c1384f1ec15c6b35b18cf3a613c3b84f16c15c6d32d8c67b3309e0e613c2b85f12c14c6335b18cf54613ccdc278260ae3c908e0c906e73e932c0befef075f8df7597bbd3477e6f0fb57387f0d7ce64a57ae8dd8f615e0a3df865f19f159d4e90a684bbf2be71fdb12ea84b1fa619de23502c7954278260ae36916c6335518cf6c613c0b85f1ac14c6d3218c67b3309e6e613c5b85f1ec10c6b34e18cf6e613c7b85f14c10c6d3248c678a309e59c2781608e3592b8c678f309e55c2781a84f1e484f1340ae399298c67be309e56613c5b84f1b40be3e912c6d32b8c67a9309eedc278fa84f1ec12c6b35a184fbd309e4dc278b2c2785608e399218c67bf309e79c2789608e3c90be3a913c6335918cf46613cd385f1cc15c6b35c18cf62613c05613c9dc2787a84f16c13c6b353184fad309e65c2782609e3592f8c679a309e39c2781609e3d9278ca7268287e1ff5f863c74ff1a6d9bd6f70b89cdb01fc2fffb7915539bae76dbaa77db257e8a5707750eb98ed4ce4fe36789cbbfdf10bf9b5f0d1a5dcdd416da1f196fff70c7c6fb2a0360083c7d82081e8efb5199da39220f13fcffb379abd5359e56febecb419dab40bf6b18f48bca6d5abf0678e83c4eac59a8b75e0823f92e67e6c9429b6929750c5c033c1cc724533bc35cbdd66bd3fa08dda90ee6eab50ced8c3a7668fd5ae0d9e8cac49a857a1b853092ef6a669e2cb4999652b97a2df0701c3b4ced0c73f53aaf4d1b2374a73a98abd731b433ead8a1f5eb8067932b136b16ea6d12c248be6b78793ab2d0665a4ae5ea75c0c371ec30b533ccd5ebbd366d8ad09dea60ae5ecfd0cea86387d6af87fda0ccca1cc56c79e87704c49a857a9b853092ef5a569e8e7c16da4c4ba97eec7ae0e1e8e799740ffbb11bbc366d8ed09dea60aedec0d0cea86387d66f8888dd1224abc58da3d0e2c6089e1bc7580b8a572ef3552964569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a1e778126b16ea6d11c248beeb7879c2df056d09462e196fbd1fca3702cff50cfa30b533bc87fc80d7a62d11ba531d3cbe0e30b433ead8a1f503b01f0e94c17c430a9955e7ca982d0ffdff0c62cd42bdad4218c9773d2f4fd88f6d0d462ea5fab103c0c3d1cf33b533ecc70e7a6dda1aa13bd5c1e3eb20433ba38e1d5aa778caaccc71cc96879ecb46ac59a8b74d0823f96e64e52984bf6fdc168c5c4af5630781e740e23cc57e8c41f7b01f3be4b5695b84ee540773f510433ba38e1d5a3f04fba11ce61b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73f5e86c79e8ff5f126b16ea6d17c248be03ac3cede1bcc3f660e492f1d6fba17c08780e26ce539c7760d03d9c7738ecb5697b84ee54078fafc30ced8c3a7668fd30ec87f1ce7c430a993537c68659734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426e589e1dae4cac59a8b7430823f90ef2f284cf3dd8118c5c4addb77318780e31e8c3d4cef0be9d235e9b7644e84e75f0f83ac2d0cea86387d68fc07e5066658e62b63c3b5d9958b3506fa71046f21de2e509fbb19dc1c8a5543f76047838fa79a67686fdd880d7a69d11ba531dccd5018676461d3bb43e00fb419995398ad9f2ec726562cd42bd5d4218c977989727ecc77605239752fdd800f070f4f34ced0cfbb1a35e9b7645e84e7530578f32b433ead8a1f5a3b01f945999a3982dcf6e5726d62cd4db2d84917c479879b2d0665a4af563478187a39f676a67d88fdde4b5697784ee540773f5268676461d3bb47e13f0ec716562cd42bd3d4218c937c0cc938536d3522a576f021e8e6387a99d61ae1ef3dab4274277aa83b97a8ca19d51c70ead1f039ebdae4cac59a8b7570823f98e32f364a1cdb494cad563c0c371ec30b533ccd5e35e9bf646e84e7530578f33b433ead8a1f5e3c0b3cf9589350bf5f60961241ff663fb9878721e4f2e428bf118bbc98bdd5425b19bbdd8cd55125bf35cf3bc1a626b9e6b9e0755105bf35cf3bc1a62576baea9e6d5a979e63c6a9e398f9a675473919aff23b9d89dd8afd4402c86f1b9b6d18c3922cf22613cfb85f1cc11c6334d18cf24613ccb84f1d40ae3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67b2309e3a613c79613c4b84f1cc13c6334318cf0a613c59613cf5c278560be3e913c6b354184faf309e2e613cedc2785a85f1cc17c63353184fa3309e9c309e06613cab84f1ac15c6b34018cf2c613c5384f13409e399208c679d309e6e613c1dc278560ae359288c67b6309ea9c2789a85f14c14c69311c0930dcefd6d07fe9ea0167c747fff3ef03dc995f783af2622066de738f868fc94b661cf5717cd3c97a1063e737304d79322e2519c9b233e3b16ba63ac7e58a7788dc071b3109e89c2789a85f14c15c6335b18cf42613c2b85f17408e3e916c6b34e18cf04613c4dc278a608e399258c6781309eb5c2785609e36910c69313c6d3288c67a6309ef9c2785a85f1b40be3e912c6d32b8c67a9309e3e613cab85f1d40be3c90ae359218c6786309e79c2789608e3c90be3a913c6335918cf74613c7385f12c17c6b358184f41184fa7309e1e613cb5c2789609e399248c679a309e39c278f60be359248ca72682673f134fdcf314f60b886dd7f3a08b5db2f0fe58fc2e68bfc748ebc78011798927cfc413f70c8abc80d8b6fd347640732859781f7fd7c19553798f91d6a3720aef6b5ccdc413f7dc8ed502625b2d68ae82ee01c8c2fb781f33574eadf618693d2aa79a7979c2ff1fb02a18b994bad7088f398e7dc8d4ce3c1e7f093e4323f219c9ab3cadf019aa63f11c89b8fe80e229b332c7315b1e9a6b22563c9f8dc5efa846c318757e65e009fbc7d660e452aa7f3c063c1ce70fa67686fdd809af4dad11ba531dccd5130ced8c3a7668fd4444ec9620592d4e8e428b93113c27c7580b8a572ef3fe14324bd0d9f2ac746562cd42bd954218c997e7e509fbc795c1c8a554ff78127838ce1f4ced0cfb84535e9b5646e84e75f0f83ac5d0cea86387d64fc17e2887f9440a9955e7ca982d0fcd89106b16ea15843092ef182b4f219f8536d352aa1f3b053c1cfd3c93ee613f36e8b5a910a13bd5c1e36b90a19d51c70ead0fc27e5066655666655666655666655666655666655666655666655666655666655666d9cc96877e3b4cac59a8d72e84917c2759798af30eedc1c8a5d4bcc320f070cccb30e91ece3b9cf6dad41ea13bd5c15c3dcdd0cea86387d64fc37e5066655666655666655666655666655666655666655666655666655666655666d9cc96879ed94eac59a8d72184917ca77879c2df6d7504239752f30ea78187635e86a99de1bcc32d5e9b3a2274a73a98abb730b433ead8a1f55b603f28b33247315b1e7a761cb166a15ea71046f20db2f214e74f3b83914ba97eec16e0e1e8e799740ffbb1335e9b3a2374a73a98ab6718da1975ecd0fa19d80fe5309f4821b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abced5a3b3e5a1ffb148ac59a8d72584917ca75979dac37987ae60e4526adee10cf070cccb30e91ece3b9cf5dad415a13bd5c1e3eb2c433ba38e1d5a3f0bfb61bc339f4821b3e6c6d8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbd3edcac49a857add4218c9770b2f4ff8dc83ee60e452eabe9db3c07386411fa67686f7ed0c796dea8ed09deae0f135c4d0cea86387d687603f28b33247315b9e1e5726d62cd4eb11c248be33cc3c5968332da5fab121e0e1e8e799da19f663b77a6dea89d09dea60aedecad0cea86387d66f059e5e5726d62cd4eb15c2483e3cc7f532f1e43c9e5c8416e72bb65def73e546f79a85f7fb8091ab6fe9f518691d731c7989a78f89a7c9e3698ad0e27cc5b6ed5febca53dc6b16de5f0b8c5c39d5e731d27a544e3501cf5a269e668fa739428bf315db6ab1ce95a7bad72cbcbf0e18b9726aadc748eb5139d50c3ceb9878e2faa47563103beef81a8bd871b93216b15573d55c3557cd3935cf9c47cd33e751f38c6a2e4a7386eba870ec946204c0804b3f94f1bb02c7b527533bf351dfc7d6796dc2ef6338e670bebe6f28b332c731338d5b7464bdd8a44fe0f1d032c4acc5588e41f6796d923606592ef3891432abce9531dbd8b7251fbb23ebc5267d028f8796db98b5606a67d81fdc1e446b4cf1725007f3f476867666202e6d9bd66f87fd500ef3891432abce9531dbd877241ebbf86c768c4dfa041e0f2d77306bc1d3ce627f706710ad31c5cb411dccd33b19da9981b8b46d5abf13f683322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9c78ece2f83dc6267d028f879627336bc1d3cee2f8fd5d41b4c6142f0775709fdfc5d0ce0cc4a56dd3fa5db01f945999955999955999955999955999955999955999955999955999955999955936b38dfd94e46387bfc7c1d8a44fe0f1d0f214662d98da198edfdf1d446b4cf1725007f7f9dd0cedcc405cda36addf0dfb419995398ad9c67e6ae2b18bf379189bf4093c1e5a9ecaac054f3b8bfdc13d41b4c6142f0775709fdfc3d0ce0cc4a56dd3fa3db01fca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569dab47671bfbdec463b787e3f7189bf4093c1e5aee65d682a79dc5f1fbfb82688d295e0eea609edec7d0ce0cc4a56dd33ac5ab06e6132964d6dc181b66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f2df9d8e1efd93136e913783cb43c8d590ba67686f7bfdc1f446b4cf1725007f3f47e867666202e6d9bd6ef87fda0ccca1cc56c633fc0103bebc5267d028f87960798b5606a67d81f3c18446b4cf1725007f7f9830cedcc405cda36ad3f08b151ef846287f740528c1af76a7d4f77e55af03dc395ebc0f74c57ae07dfb35cb9017ccf76e509e07b0eb4877ccf75e515e07b9e2baf03dff35d792df85ee0ca7de07ba12bf782ef45ae3c04be17bbf2ade07b892bdf06be97baf2ede07b992bdf01be97bbf29de07b852b3f197caf74e5bbc0f72a577e0af85eedca7783ef35aefc54f0bdd695ef01dfeb5cf95ef0bdde95ef03df1b5c7909f81e8af0bdd1959f06be37b9f2fde07bb32bef07df5b5c7912f8deeaca93c1f76f50a6d7b7b97223f81e76e51cf8deeeca53c0f70e576e02df3b5d792af8dee5cacde07bb72b4f03df7b5c793af8deebca33c0f73e579e09bef7bbf22cf07dc0956783ef83ae3c077c1f72e5b9e0fbb02bcf03df475c793ef83eeaca0bc0f731575e08be8fbbf222f07dc2951783ef93ae8cfbf7df5df901f051bff220f8a85f793af8a85f7906f8a85f7926f8a85f7916f8a85f7936f8a85f790ef828ef9e0b3ecabbe7818ff2eef9e0a3bc7b01f828ef5e083ecabb17818ff2eec5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828ef1e021fe5dd1bc14779f726f0b5b8f29bc177812bbf057c17baf25bc1f73857c67ee622577e1bf81eefca0f838ffac2b783ef62577e07f896baf23bc1b7cc95df05bee5aefc6ef0ad70e5f7806fa52bbf177cab5cf97de06b75e5f7836fb52b7f007c7957fe20f8da5cf943e02bb8f287c1d7eeca1f015f872b7f147c9daefc31f075b9f2c7c1d7edca9f005f8f2b7f127c741ea77ec61ecff6b8241d4823eba336b746b4857c13a12dfd41b2d774148bb64debedc048fba030f68c85d132b6798c96a7934133cc2b5a4a7dffe8049e0e061ea67686df3fbabc36b57b6dca419d8ba19d5d0cedcc405cda36ad77416c8e7d8e5ad4bbed2ef5b4a8833affe14e72f67c5a4a47da86cddf42445b7a99db42dba67ea9770c62777bb1f35e6cec8f6929757c7503730f03b3dd6e5ff2db0d8faf356e5b945314270f6d5a0b1a24d5268c9d714671c85f07e59a99c375a91ee941e72f62b7b94cfb12d9fdcf757a9fcb419dde88f6f707c9b6bfcfe3e9f398ed3ef9fb8c610e86e321cc815e8f83d6f3a05d5f8c76bda01dd5c1f35f1b93763d1e0fadb7010f5de374818fae15881fafb35ac780dbeff7ba22b8c9d70d8c6d118cf9e419c36b9d368f91d6f3c048be1ee0e966d2ccdfd74b3d7df0bcdce0d5a1cfd6419dd9ae2f690a467effa0baf6b85b92196e177d07ff47906c9fdec0a0178e0f04a04fe06918805ed4ce7a069ec9c1f018c1d9a1c133076f1ab874e0e0910ca0d57998f89a8968460df8b05c1be10b8291432138244b432138245be3c982433054df7e95b2cda2e1868193c7879e786ae0d4e133779e1e1a38b267f026a4aef7e89134ae05488a3e5a2606c38336fd41b2c9d3e0c52a953c13e17502030f533bc393de24af4d0d5e9b7250a71ede9bc4d0ce0cc4a56dd33a0e00930fb393dec709831aaf2d98c593e0d5dfb7893688023e0eb69f7170f6bd3a276c83832771a9c7b057717627d85142db53db51403bea670f3b3baa672f8c6c476e47e9eca89c1d85b3a36e7694cd8eaad951343b6a6647c9eca8584b501cf5ba1078be048c7654cb8e62d9512bfb4dd29e15ec28941d75b2a34cf66ac27e4bb167607bc569cf86f62c68af76ecb729fbcdda9e61ecd9db9e99ecd9c45e1dd9ab227b156bafeaeccccc7a631b9cd61b8d6d32b6d9d816635b8d6d33b6ddd80e633b8ded32b6dbd81e637b8ded337689b12704c511e54b8d5d66ec72634f347685b12b8d5d65ec6a63d718bbd6d875c6ae377683b11b8d1d3076d0d82163878d1d313660eca8b19b8c1d3376dcd8938cdd1c14eff03869ec94b14163a78ddd62ec8cb1b3417196c8ce0ad959203beb636779ecac8e9dc5b1b3367696c6cecad859183beb726f509c55b1b3237636c48e84db916f3bd26d47b69f191447aeed48f57382e248b41d79b623cd7664d98e24db91633b526c4786ed48b01df9b523bd7664d78ee4da915b3b526b4766ed48ac1d79b523ad7664f5a1a038726a474aedc8a81d09b5239f76a4d38e6c3e1c14472eed48a51d99b4239176e4d18e34da91453b9268470eed48a11d19b4238176e4cf8ef4d9913d3b926747eeec489d1d99b323719f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f06c59cfcb2b1af18fbaab1af19fbbab16f18fba6b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b1478dfdc8d88f8dfdc4d84f8dfdccd8cf8dfdc2d82f8dfdcad8af8dfdc6d86f8dfdced8ef8dfdc1d81f8dfdc9d89f83e1517bec28feee566804f9e0d0d0c0c9d3432d43832d276f3d3174fcf4893b5b6e3f3e74ac65f0b68133474f0cde8e1f7e9beb9a68787ce3993307ef6c397eeac8c01d2d83b70eb50c1e6d393478eba92367f1435f741f5a706ec483478ec407fb61cd6320fd498541ffe83e47130f3b4bb7ed2f9508f29f957c687a6d650dbad29d59e85be965c5abb896b32706875af22da7ccdf8327cc67068eb4b6e07b678dc867875ace0e1d3c33d472f4cce0c996b656dceec1491534e26f332af8d0ac99a36f79f0ffaa88c27fb1020400", + "bytecode": "0x1f8b08000000000000ffed9d77701cc795c6679118565810cc99902c538ce06291c104e64c9992ac1c98409116495024942ccb922cc939e76c39cb39675bce392739e7ecf2d5dd3f57bebaab525df76c3fe34373668d5dcd03df60df543d6ccfdbde79bffee64dcf6cf7ec20131497bf1acbb872adb1c705672ff47ebf7bcd3fb6a52dc16de539393329e1ac4909676d4a38eb52c2599f12ce8694704e4809e7c494704e4a9033037c5cbc9353c69b4d19ef79413af2b631259cb9947036a584734a4a389b53c23935259cd352c2393d259c3352c23933259cb352c2393b259c7352c23937259cf352c2393f259c0b52c2b930259c8b52c2d99212cef353c27941829ccb8193c6c82f74af8f77af8bddeb45ee75897b5dea5e97b936d6b975bbcd15c6561a6bf5de5b65998dd9c1f282f75ebbb10e639dc6badc7b2deebd6e633dc67a8df5195b6d6c8db1b5c6d6195bef34d9606ca3b14dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb18b8d3dc1d83e639718bbd4d865c69e68ec728fe50a63571abbcad8d5c6ae3176adb1eb8c5d6fec0663fb8d1d3076d0d82163878d0d183b62ec4663478d1d33f6246337193b6eec84b193c6068d9d3276b3b1d3c6ce181b32768bb15b3dcd6e3376bbb13b8c3dd9e3bcd3d8538cdd65eca9c6ee36768fb17b8d3dcdd87dc6ee37f680b1a71b7b86b1671a7b96b1671b7b8eb1e71a7b9eb1e71b7b81b1171a7b91b1171b7b89b1971a7b99b1971b7b85b1571a7b95b1573b163a105e63ecb5c65e67ecf5c6de60ec41636f34f626636f36f616636f35f636636f37f690b177187ba7b177197bb7b1f7187bafb1f7197bbfb10f18fba0b10f19fbb0b18f18fba8b18f19fbb8b14f18fba4b14f19fbb4b1cf187bd8d8678d7dced8e78d7dc1d8178d7dc9d8978d7dc5d8578d7dcdd8d78d7dc3d3fc9bc6be65ecdbc6bee37cdf75afdf7375e998ffbe7bfd817bfda17bfd917bfdb157ff116ffd27defa4fddebcfdcebcfddeb2fdceb2fddebafdcebafddeb6fdceb6fddebefdcebefddeb1fdceb1fddeb9fdceb9fddeb5fdcab9d576b9f512c4f0c8697fe20a13ea963a0d78eab93d8febc9d9d13aa75efd16b8bf3d7b9757acd387fbd5baff7fc0d6ebdc1dbce44b73ed1f3e7dc7acef34f71eb533cff54b73ed5f34f77ebd33dfff96efd7cf067dd7bc586155facafd6b932e0a3fcac015fbdf3d582af813607be09ce570f3edabf0de09be47c13c037d9f926822feb7c93484b63e7395f7f9054aee40fd8ed3626bd5d3717914b9ef7a0dd6e1313ef94e4790fd9ed3633f0dafc98eab6d5087933cdf972e09bee7c4de0735dd0bf8e39eb9be97ccde09be57c53c137dbf9a6816f8ef34d07df5ce79b01be79ce37137cf39d6f16f81638df6cf02d74be39e05be47c73c1d7e27cf3c077bef3cd07df05ceb7007cd45f2e04df85ceb7087c746dd7023ebace3b1f7c74cd7781f3d97e626206e2393ff551613cea9fc1f778ea9bc1b798fa65f05d447d32f896406cf22d857e857ccb9c8ffa28fb5e9f2bf707491d1385f0185e9df476cd96ed76d726bfdd700e6c5d30ac753fc4590d5aad77e504ef0f69c3d8741d4371c85f07e51d5097ea911e749e2176dbefaf71e5f5253ed7e77d2e0775d644b4bf3f48b6fd6b3d9eb51e733db49f29678f68ce8e7a293b67af80ba7eeed135cf78ccd9ddc0917cceb6b76bce8e7a293b6707a0ae9f7b74dd3b1e73f66ae060c8d96e9e9c2de435678be36041109d7bf4dd673ce6ec51e0483e673b356747bf949db3f7425d3ff7e8fbef78ccd95b8123f99cedeed66b83512f65e7ec0ba0ae9f7b3416331e73f67ee060c8d983dacf8e7a293b675f0775fddca371c1f198b32f068ee473b6972967db356783e29c661044e71e8d518fc79c7d103892cfd9433a3e3bfaa5ec9cfd04d4f5738fe64bc663cebed795ed3cc377dd3cc37cf07dcff916006ff2b97db88d29b7db34b78bf77a0441748ed2dcdd78cced875dd9e6f10fe0de03f2fd90ee4b00df8f9cef02f0fdd8bb6783e918e8d26360f46d2af718f805d4f57399e691c7e331f03de060c8d96ecdd9d1b7a9dc9cfd1bd4f5738fee69188f39fb6be060c8d91ecdd9d1b7a9dc9cfd27d4f5736f892b8fc79cfd872bdbeb859fb9eb8565e0fbb9f32d07df2f9c6f05f87ee97c2bc1f72be76b05dfaf9d6f15f87ee37c79f0fdd6f9dac0f73be72b80eff7ced70ebe3f385f07f8fee87c9de0fb93f37581efcfced70dbebf385f0ff8feea7cbdce67efc9a37bafbee27c76df9246fd41b2fb96eeb1a46dd3fa8a3188dde4c56e1ac3d8cd5eece688d82b19626721062d196fbd1fca2b7979f239e0c158ab928fd56edbde1a8cbeedab8027cfd0f62cc4180d4f1e78da92e709cf9f85e4b71beee3564fd32cc46a8576b533b42b03b168dbb44ef172e0c3febb3d82b12379c6420662d1b669bd0318c987e7133aafd3f163cf878b33c3bc0cc752784d44f1e8f94fc4b10afc54e791e9c36ccb1c5b23bc8fe7d636cfc79497615e502cda36ad53bc46684fdbd8331646cb98f718b9fa880cc4a26dfbb1f1785f39f69a8d6abfe6c0770efaa442a57d5223b08dc5754adcbe96129be37c958118d4b791e605f0539d99ee0709b66fdb06fd2ec3f15728f7fa0dfb83e4f3b890c7e37a343cedc0c371ec331daf793cef3f1a249b6b9d9e566d9e5639a8d301fa7532e857ea3a84e229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c66bcff02e737a9de0a218ce42b000fc7387ff80c28b72ddabe9dd7f929cceb243f6f51c8e39c25dd63b8d46b731dd4f97b66b8ee2f613edd9f1bc439cd15bcda8dea3e8bc6e0ecb958ce39c4b879e0a8f9cb96c462170e71cdb7d97bd4ec73c85a3d5d574468ca709fca084d339ea6789fe2728fc7e6e99cda61368eb9bf72e722512b2a2739b787f718f0ee9762ff41b950138cec3ff03cd39578ec917398345fdee5c5ae833aff9319de37742f2afdaf3bff9e275ba7dbdb367d6629f8bbbd6d4f719f258e7a6ffbadf059aaf37fd0a7bebe26f897661cf77f60bf1c405b71e98732ce9b277f1e2ecee3b797c1d3093c1cfd0cd3f5461e8f81a4e7f1bb3dada2ae63a84e17e8d7cda05fd4b528ad533c6556666556666556666556666556666556666556666556666556666556666596cf8cbf1525d62cd42b08611ca37b1fc2f90c7afe0b6ddfceeb3cb766382ef73c1ccd392df3da5c0775be5d335cf785aedc189c7dbf43dcbe6498cf2bb92f295e23b407e782b87ecfdde1f174446841e596c46217e7f193d778781ebfddd3b510a129d7f18a73aca8291eaf6d1e0fce8d360667df5b9285ed8cc5bd43717941f1f058ea001f95f1f7d11cfb19cf25fe7d3d140fe7af1f72da4e09b8f67d21cfd96ff4409bfa83b3f3bb0eeabc07fabef7b932dec381f78e3c1cf13e2da5e6a9493f9667d9e58bf3beab81b31fe260ec35c09a50ec368c9d714671c85f07e5cfd40cd7a57aa407694decf618a1678221bbffb936ef7339a8d31bd1fefe20d9f6f7793c7d1eb3dd271f843c7b18ceff5c7d526f8c464b4123aa83d7415ce74efffe4affbe42ec471bbc3af4d93aa8f315e8a3e2ee1f8d3a07709fc768db51e731ffbc309afb3cabfd3ead47a0bf48fa3ead472087f03eadc0dbfe32d83e713504f1e716aaf3736ffbfe35397d06ef03a33abf82fea2c9ddb3d8189c7dfd8df74c8dc5f7abb8fba4291e5ed7d07ba369bb65ee81fafd0932634e200b5e27509dbf78fbac3b867b55c467ff1ef359d28a9e4385df5f7cfdac0ebdf099fe4474281ef37d5e5b28af7ba12d54e7bfbc6bc0e4af5b8ad780c9b775e43509f5031d116da53aff0dc7da3fe11a8ff6137eef68a83dfb7d5a4a5d03927eb6cd63fd7c608c2de1f9c0f5b5c375fde7fc92d6e53e1fb8cbfb9cc4e703ff2fe45903dc87ced557af89d16819684475f0b741741ec167f9468d759cabefd3782d85fd731368caf5bb03fffce78fab455d232cf334c66b84e98e798ad3d9afeb8f17d2f932c9fb86f1b712ad10177f2bd1caa4671e74eb8775bc2e3897b1f34cb1e39e399d1f83d871cf9c1e8bd8cd5eece6318cad9aabe6923467782672f8fb337c66a95d4a5d9712430e3e579302c6da1430d6a580b13e058c0d29609c9002c68929609c9402c6c92960cc02e3b93cb733e853a8541faefd55ea5a036333fcef9242b9ffbf83f97fa994bcf6c1d80cdfe9422d5606a3d702bfe7713cfba1dcfff5420cf8bf0ba6a680715a0a18a7a78071460a1867a68071560a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a185b52c0787e0a182f4801e3e352c078610a181f9f02c6c5ca9808e3725ec642a58c9687e37ffe3d96ff39c6c0938fbae794e9fed9b2ffdf1af3f349db2a7d6e1cde5bc2fb3fe11edbb3ed38ee1d29f7d976a5fedf2a1363a15246ae7b81f0bea3d1f044dd1fd4c6cb58a89491ebf72ff81bbdd1f07481669d119a3130162a65e4ba57aedc7b39f19efeae08cd18180b9532e27dd509f2849a7597c1d3039a754768c6c058a89491ebbee42cc4180d4f2f68d613a1190363a15246a6dfb6859af596c183bf01eb8dd08c81b15029a3e559cda4595f193cab41b3be08cd2431224fd2cfc9ee8b88c5f19bc172db4e0cc83829058c9353c088f74970f45fa5ee93e8e3d5a750a93e5cfbabd47d12189be1f731a116f87b887fa7c55a5e9e92f74960ec754c5ae0ef55fe9d16eb8087e3f7335988311a1e62c8c1e7a6a680715a0a18a7a78071460a1867a68071560a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a18f1bb2ac3b562c9ef2febc679ecb8ef2ae33d76dcf792f11e5bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73c97143b0d63fcca38fe1891a725399e3cb61d63f50b687b7f044f86a9ed186b8380b61343da18d7a78071750a1855c7e23d8895305a9e8d4c3c1bcae0d9083c9b98783696c1b309783627cf13e6d4a632788821079f5b9d02c6f52960541d5547498caa63f5e8a88ccaa88cca782e18d3d0872b632af2b15029a3e5d9923c4fa8d9e63278b68066f4b9b61430f6a780713d2f63a15246cbb335799e50b32d65f06c05cde8736dbc8c854a192dcfb6e47942cdb696c1b30d34db1aa1190363a15246cbb33d799e50b36d65f06c07cdb64568c6c058a894d1f2ec489e27d46c7b193c3b40b3ed119a3130162a65b43c3b93e70935db5106cf4ed06c4784660c8c854a192dcfaee47942cd7696c1b30b34db19a1190363a15246cbb33b799e50b35d65f0ec06cd764568c6c058a894d1f2ec499e27d46c77193c7b40b3dd119a49655c9d02c6f5296064d6b15029a3e5d9cbc4b3a70c9ebdc0733113cfde32782e069e2724cf13e6d4c565f010430e3eb73a058ceb53c0a83aaa8e921855c7ead15119955119cb63ec4f01a3ee6b6594cac8f0fdaae46f912e1ee7b19bbcd84d55123beeb748e33db6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae792e29f6bee46317ca7dc6cc3ee0e178e60d533bf376bb97b86d3d9aa07e56ab4b3dad2ef6b4ca419d4b40bf4b19f4cb405cda36ad53bc72992f12c0cc14bb60fb9749d07e8ab1ded3c3c6bf8ca9ed717dfd65e33c765c5f3fde63c7f5f5e33db6e6b9e67935c4d63cd73caf86d89ae79ae7526263b93e18be6ea7e79fda6d3cd195ebdc3ab2929fea5c39a1f83a25d0638823b61e437aaea886d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9bc3ccfc1fb3563c013783c41099ebdc278160ae3992d8c67aa309e75c2782609e3592a8ca75618cf0e613c5b85f1f408e3e914c65310c6b34818cf32613c7384f14c13c6b34118cf64613c75c278f2c278160be3992b8c672c7ecf500ecf74613ccb85f16485f16c14c6532f8c6795309e9dc278fa84f16c13c6b344184faf309e2e613cedc278360be36915c6334f18cf0c613ce709e36914c6d3208c67a5309eddc278d608e3992f8c67a6309e9c309e26613c1384f1ec11c6b34b18cf5a613cdb85f16c11c6d32d8c6793309e0e613c2b84f12c10c6334b18cf14613ccdc278260ae3c908e0c906673f932c0befef035f8df7597bbd3467c6f0fb973b7f0d7ce60a57ae8dd8f6e5e0a3df865f11f159d4e972684bbf2be71fdb12ea84b1fa619de23502c7154278260ae36916c6334518cf2c613c0b84f1ac10c6d3218c6793309e6e613c5b84f16c17c6b35618cf2e613c7b84f14c10c6d3248c27278c67a6309ef9c278d608e3d92d8c67a5309e06613c8dc278ce13c6334318cf3c613cadc278360be36917c6d3258ca75718cf12613cdb84f1f409e3d9298c6795309e7a613c1b85f16485f12c17c6335d18cf3e613c7385f12c16c69317c653278c67b2309e0dc278a609e399238c6799309e45c2780ac2783a85f1f408e3d92a8c6787309e5a613c4b85f14c12c6b34e18cf54613cb385f12c14c6b357184f4d040fc3ffbf0c79e8fe35da36adef13129b613f84fff7f34aa6365de5b655efb64bfc14af0eea1c741da9bddf0b3f4b5cfefd86f8ddfc2ad0e82aa6b6d0fec878fb873b36de57190043e0e91344f070dc8fcad4ce117998e0ff9fcd5badaef6b4f2f75d0eea5c09fa5dcda05f546ed3fad5c043e77162cd42bd754218c97719334f16da4c4ba963e06ae0e1382699da19e6ea355e9bd645e84e753057af616867d4b143ebd700cf065726d62cd4db2084917c5731f364a1cdb494cad56b8087e3d8616a6798abd77a6dda10a13bd5c15cbd96a19d51c70ead5f0b3c1b5d9958b3506fa31046f25dcdcbd3918536d3522a57af051e8e6387a99d61ae5ee7b5696384ee540773f53a8676461d3bb47e1dec076556e62866cb43bf2320d62cd4db2484917cd7b0f274e4b3d0665a4af563d7010f473fcfa47bd88f5defb5695384ee540773f57a8676461d3bb47e7d44ec9620592d6e1885163744f0dc30c65a50bc7299af4c21b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3049d2d0f3dc79358b3506fb31046f25dcbcb13fe2e68733072c978ebfd50be0178ae63d087a99de13de4fbbd366d8ed09deae0f1b59fa19d51c70eadef87fdb0bf0ce6eb53c8ac3a57c66c79e8ff67106b16ea6d11c248beeb7879c27e6c4b307229d58fed071e8e7e9ea99d613f76c06bd39608dda90e1e5f0718da1975ecd03ac55366658e63b63cf45c3662cd42bdad4218c977032b4f21fc7de3d660e452aa1f3b003cfb13e729f6630cba87fdd841af4d5b2374a73a98ab0719da1975ecd0fa41d80fe5305f9f4266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569dab4767cb43ffff9258b3506f9b1046f2ed67e5690fe71db60523978cb7de0fe583c07320719ee2bc0383eee1bcc321af4ddb2274a73a787c1d626867d4b143eb87603f8c77e6eb53c8acb93136cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f26c776562cd42bded4218c9778097277ceec1f660e452eabe9d43c07390411fa67686f7ed1cf6dab43d4277aa83c7d7618676461d3bb47e18f683322b7314b3e5d9e1cac49a857a3b843092ef202f4fd88fed08462ea5fab1c3c0c3d1cf33b533ecc706bc36ed88d09dea60ae0e30b433ead8a1f501d80fcaaccc51cc9667a72b136b16eaed14c248be43bc3c613fb63318b994eac7068087a39f676a67d88f1df1dab4334277aa83b97a84a19d51c70ead1f81fda0ccca1cc56c7976b932b166a1de2e218ce43bcccc938536d352aa1f3b023c1cfd3c533bc37eec46af4dbb2274a73a98ab3732b433ead8a1f51b8167b72b136b16eaed16c248be01669e2cb4999652b97a23f0701c3b4ced0c73f5a8d7a6dd11ba531dccd5a30ced8c3a7668fd28f0ec716562cd42bd3d4218c9778499270b6da6a554ae1e051e8e6387a99d61ae1ef3dab4274277aa83b97a8ca19d51c70ead1f039ebdae4cac59a8b7570823f9b01fdbcbc4d3e8f1344668311e633779b19baa2476b317bbb94a626b9e6b9e57436ccd73cdf3a00a626b9e6b9e5743ec6acd35d5bc3a35cf9c43cd33e750f38c6a2e52f347938bdd990b86971a88c5303ed7369a3147e459288c679f309ed9c278a60ae399248c67a9309e5a613c3dc2783a85f11484f12c12c6b34c18cf1c613cd384f14c16c653278c272f8c67b1309eb9c278a60be3592e8c272b8ca75e18cf2a613c7dc2789608e3e915c6d3258ca75d184fab309e79c2786608e3394f184fa3309e06613c2b85f1ac11c6335f18cf4c613c39613c4dc2782608e3592b8ca75b184f87309e15c2781608e399258c678a309e66613c1385f16404f06483b37fdb81bf27a8051fdddfbf177c4f72e57de0ab898841db39063e1a3fa56dd8f3d58533ce66a881cfdc14c1f5a4887814e7a688cf8e85ee18ab1fd6295e2370dc248467a2309e66613c5384f1cc12c6b34018cf0a613c1dc278ba85f1ac15c63341184f93309e9c309e99c278e60be359238c67a5309e06613c8dc278ce13c6334318cf3c613cadc278da85f17409e3e915c6b344184f9f309e55c278ea85f16485f12c17c6335d18cf5c613c8b85f1e485f1d409e3992c8c679a309e39c2789609e359248ca7208ca753184f8f309e5a613c4b85f14c12c6335518cf6c613cfb84f12c14c65313c1b38f8927ee790afb04c4b6e3f0746d4a637459787f2c7e17b4cf63a4f5a3c0483ebc2f36cfc413f70c8abc80d8568b5550b64b16dec7df7570e554de63a4f5a89cc2fb1a5731f1c43db7639580d8560b9aaba07b00b2f03edec7cc9553ab3c465a8fcaa9665e9ef0ff07ac0c462ea5ee35c2638e631f32b5338fc75f82cfd0887c46f24a4fab1cd4198be748c4f507144f9995398ed9f2d05c13b1e2f96c2c7e47351ac6a8f32b034fd83fb606239752fde351e0e1387f30b533ecc78e7b6d6a8dd09dea60ae1e676867d4b143ebc72362b704c96a7162145a9c88e03931c65a50bc7299f7a5905982ce9687ee4524d62cd45b2184917c795e9eb07f5c118c5c4af58f278087e3fcc1d4ceb04f38e9b5694584ee54078faf930ced8c3a7668fd24ec8772988fa7905975ae8cd9f2d09c08b166a15e410823f98eb2f214f25968332da5fab193c0c3d1cf33e91ef663835e9b0a11ba531d3cbe0619da1975ecd0fa20ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e8b7c3c49a857aed4218c9778295a738efd01e8c5c4acd3b0c02cfc9c4798af30e0cba87f30ea7bc36b547e84e7530574f31b433ead8a1f553b01f945999955999955999955999955999955999955999955999955999955999955936b3e5a167b6136b16ea75086124df495e9ef0775b1dc1c8a5d4bcc329e0e19897616a6738ef70b3d7a68e08dda90ee6eacd0ced8c3a7668fd66d80fcaaccc51cc96879e1d47ac59a8d72984917c83ac3cc5f9d3ce60e452aa1fbb197838fa7926ddc37eecb4d7a6ce08dda90ee6ea698676461d3bb47e1af64339ccc753c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73f5e86c79e87f2c126b16ea75096124df29569ef670dea12b18b9949a77380d3c1cf3324cba87f30e67bc367545e84e75f0f83ac3d0cea86387d6cfc07e18efccc753c8acb93136cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f274bb32b166a15eb71046f2ddcccb133ef7a03b18b994ba6fe70cf09c66d087a99de17d3b435e9bba2374a73a787c0d31b433ead8a1f521d80fcaaccc51cc96a7c79589350bf57a843092ef34334f16da4c4ba97e6c087838fa79a67686fdd82d5e9b7a2274a73a98abb730b433ead8a1f55b80a7d79589350bf57a8530920fcf71bd4c3c8d1e4f638416e72ab6d5a2cf95cf73af5978bf0f18b9fa965e8f91d631c7c9d7083c7d4c3c4d1e4f538416e72ab6d5620d94ed9285f7d70023574ef5798cb41e95534dc0b38689a7d9e3698ed0e25cc5b65aac75e529ee350befaf0546ae9c5ae331d27a544e3503cf5a269eb83e69ed18c48e3bbec622765cae8c456cd55c3557cd55734ecd33e750f3cc39d43ca39a8bd29ce13a2a1c3ba5180130e0d20f65fcaec071edc9d4ce7cd4f7b1b55e9bf0fb188e399cabef1bcaaccc71cc4ce3161d592f36e913783cb40c316b319663907d5e9ba48d4196cb7c3c85ccaa7365cc36f6adc9c7eec87ab1499fc0e3a1e556662d98da19f607b705d11a53bc1cd4c13cbd8da19d19884bdba6f5db603f94c37c3c85ccaa7365cc36f6ed89c72e3e9b1d63933e81c743cbedcc5af0b4b3d81fdc11446b4cf1725007f3f40e867666202e6d9bd6ef80fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec27271ebb387e8fb1499fc0e3a1e5c9cc5af0b4b3387e7f6710ad31c5cb411ddce77732b433037169dbb47e27ec076556666556666556666556666556666556666556666556666556666556666596cd6c633f25f9d8e1ef713036e913783cb43c85590ba67686e3f77705d11a53bc1cd4c17d7e17433b331097b64deb77c17e5066658e62b6b19f9a78ece27c1ec6267d028f8796a7326bc1d3ce627f707710ad31c5cb411ddce77733b433037169dbb47e37ec8772988fa7905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7ead1d9c6be27f1d8ede1f83dc6267d028f87967b98b5e0696771fcfede205a638a97833a98a7f732b433037169dbb44ef1aa81f9780a993537c68659734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426ed8d84f4b3e76f87b768c4dfa041e0f2d4f63d682a99de1fd2ff705d11a53bc1cd4c13cbd8fa19d19884bdba6f5fb603f28b3324731dbd8f733c4ce7ab1499fc0e3a1e57e662d98da19f6070f04d11a53bc1cd4c17dfe00433b331097b64deb0f406cd43ba1d8e13d9014a3c6bd5adfd35db9167ccf70e53af03dd395ebc1f72c576e00dfb35d7902f89e03ed21df735d7939f89ee7ca6bc1f77c575e03be17b8721ff85ee8cabde07b912b0f81efc5ae7c0bf85ee2cab782efa5ae7c1bf85ee6cab783efe5ae7c07f85ee1ca4f06df2b5df94ef0bdca959f02be57bbf25de07b8d2b3f157caf75e5bbc1f73a57be077caf77e57bc1f706575e0cbe07237c6f74e5a781ef4dae7c1ff8deeccafbc0f716579e04beb7baf264f0bd0dcaf4fa76573e0f7c0fb97223f8dee1ca39f0bdd3959bc0f72e579e02be77bb7233f8dee3ca53c1f75e579e06bef7b9f274f0bddf956780ef03ae3c137c1f74e559e0fb902bcf06df875d790ef83ee2ca73c1f751579e07be8fb9f27cf07ddc951780ef13aebc107c9f74e545e0fb942be3fefdb42bdf0f3eea571e001ff52b4f071ff52bcf001ff52bcf041ff52bcf021ff52bcf061ff52bcf011fe5dd73c14779f73cf051de3d1f7c94772f001fe5dd0bc14779f722f051debd187c94772f011fe5dd4bc14779f732f051debd1c7c9477af001fe5dd2bc14779f72af051debd1a7c9477af011fe5dd6bc14779f73af051debd1e7c94776f001fe5dd83e0a3bc7b23f828efde04be16577e33f8ce77e5b780ef02577e2bf81ee7cad8cf5ce8ca6f07dfe35df921f0515ff80ef05de4caef04df12577e17f896baf2bbc1b7cc95df03bee5aefc5ef0ad70e5f7816fa52bbf1f7cadaefc01f0ad72e50f822fefca1f025f9b2b7f187c0557fe08f8da5df9a3e0eb70e58f81afd3953f0ebe2e57fe04f8ba5df993e0eb71e54f818fcee3d4cfd8e3d91e83a40369647dd4e6d688b6906f22b4a53f48f69a8e62d1b669bd1d18691f14c69eb1305ac6368fd1f27432688679454ba9ef1f9dc0d3c1c0c3d4cef0fb4797d7a676af4d39a87311b4b38ba19d19884bdba6f52e88cdb1cf518b7ab7dd259e167550e73fdc49ce9e3b4be948dbb0f95b88684b2f735b68dbd42ff58e41ec6e2f76de8b8dfd312da58eaf6e60ee6160b6dbed4b7ebbe1f1b5da6d8b728ae2e4a14d6b4083a4da84b133ce280ef9eba05c3363b82ed5233de8fc45ec3697695f22bbffb94eef7339a8d31bd1fefe20d9f6f7793c7d1eb3dd27ff9c3eccc1703c8439d0eb71d07a1eb4eb8bd1ae17b4a33a78fe6b63d2aec7e3a1f536e0a16b9c2ef0d1b502f1e37556eb1870fbfd5e570437f9ba81b12d82319f3c6378add3e631d27a1e18c9d7033cdd4c9af9fb7a89a70f9e971bbc3af4d93aa833cbf525538291df3fa8ae3dee166786db45dfc11f0d92edd31b18f4c2f18100f4093c0d03d08bda59cfc03339181e2338333478fac08d03970c1c389c01b43a0f135f3311cda8011f966b237c4130722804876469280487646b3c59700886eadbaf52b65934dc3070e2d8d0134f0e9c3c74fa8e53430387770fde88d4f51e3d92c6b50049d147cbc46078d0a63f4836791abc58a5926722bc4e60e0616a6778d29be4b5a9c16b530eead4c37b9318da9981b8b46d5ac70160f26176d2fb386150e3b505b37812bcfafb36d10651c0c7c1f6330ecebe57e7846d70f0242ef5187614d15ec9d91d6147056d6f6d47fdec616747f5ec8591edc8ed289d1d95b3a37076d4cd8eb2d951353b8a6647cdec28991d156b098aa35e1700cf5780d18e6ad9512c3b6a65bf49dab3821d85b2a34e7694c95e4dd86f29f60c6caf38edd9d09e05edd58efd3665bf59db338c3d7bdb33933d9bd8ab237b5564af62ed559d9d9959676cbdd37a83b18dc63619db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc62e36f684a038a27c89b14b8d5d66ec89c62e377685b12b8d5d65ec6a63d718bbd6d875c6ae377683b1fdc60e183b68ec90b1c3c6068c1d3176a3b1a3c68e197b92b19b82e21d1e278c9d343668ec94b19b8d9d36762628ce12d959213b0b64677dec2c8f9dd5b1b33876d6c6ced2d859193b0b63675dee098ab32a7676c4ce86d891703bf26d47baedc8f63383e2c8b51da97e4e501c89b623cf76a4d98e2cdb91643b726c478aedc8b01d09b623bf76a4d78eecda915c3b726b476aedc8ac1d89b523af76a4d58eac3e1814474eed48a91d19b523a176e4d38e74da91cd8782e2c8a51da9b423937624d28e3cda91463bb2684712edc8a11d29b423837624d08efcd9913e3bb26747f2ecc89d1da9b323737624ee33c61e36f659639f33f679635f30f645635f32f6e5a098935f35f635635f37f60d63df34f62d63df36f61d63df35f63d63df37f603633f34f623633f36f688b19f18fba9b19f19fbb9b15f18fba5b15f19fbb5b1df18fbadb1df19fbbdb13f18fba3b13f19fbb3b1bf18fb6b303c6a8f1dc53fdd0a8d201f181a1a38716aa86568b0e5c42dc7878e9d3a7e47cb6dc7868eb60cde3a70fac8f1c1dbf0c36f775d130d8f6f387dfac01d2dc74e1e1eb8bd65f096a196c1232d07076f3979f80c7ee8cbee43f3cf8e78e0f0e1f8603fae790ca43fab30e89fdde768e26147e9b6fdad1241feb3920f4dabadac4157b8330b7d2bbdb47815d772e6f8e0504bbee5a4f97be0b8f9ccc0e1d6167cef8c11f9cc50cb99a103a7875a8e9c1e3cd1d2d68adb3d30a98246fc637a051f9a3963f42d0ffe1f68e5b57eb1020400", "isInternal": false } ], - "packedBytecode": "0x000000028df71de5000000477a1f8b08000000000000ffed9d777414c7dae65b2030782404ced9c2e13a60632144163038e78c8d31c62004061b104118e76c72748e6072ce064c30068cb1af6fced9e95edfb0e7ec7e7b76ffd8ef3bbbebddae997a3f3d14d58346ee1a1e69aacf294df5abea7e7ff5f4dbd5a9baab20484fff0a5381ce370fd379c1e193fc3fa97fcbbedfd429c67595b9e42c68249ccd1a0967f346c259d848385b3412ce968d84f39846c2d9aa9170b68e91b300f85cf11edbc878138d8cb728681c715bdc4838db3412ce9246c2d9b69170b66b249cc73512cee31b09e7098d84f3c446c2795223e13cb991709ed248384f6d249ca73512ced31b09e7198d84f3cc46c2795623e13cbb9170963612cef68d84f39c46c2796e8c9c1d8053eee59faf7f7fa07f2fd0bf17eadf8bf4efc5fab783ae63a19ebf244c9786a963982e33fea7845137f4cbc3d4d9f85f4598ba84a96b98bae9ff95eaff750f538f30f50c53af305586a97798fa84a9afd6a35f982e0fd31561ba324c5785e9ea305d13a66bc3745d98ae0fd30d61ba314c3785e9e630dd12a65bc3745b986e0fd31d61ba334cfdc3745798ee36580684e99e300d0cd3bd611a14a6fbc234384cf7876948988686a92a4cc3c2541da6e1611a11a607c234324ca3c2f460981e0ad3e8308d09d3d830d584695c98c6876942982686a9364c93c2f47098261b9a3d12a647c3f458981e37389f08d393617a2a4c4f87e999303d1ba6e7c2f47c985e08d38b619a12a6a9619a16a6e9619a11a699619a15a6d9619a13a6b9619a17a6f9617a294c2f87e99530bd1aa6d7c2f47a98de08d39b617a2b4c6f6b16d911de09d3bb615a10a685617a2f4c8bc2b4384c4bc2b4344ccbc2b43c4c2bc2b4324cabc2b43a4c6bc2b4364cebc2b43e4c1bc2b4314c9bc2b4394c5bc2f47e98b686695b98b687e98330ed08d3ce30ed0ad3ee307d18a63d61fa284c7bc3b42f4cfbc3f471980e84e993301d0cd3a761fa2c4c3f0cd3e761fa91a1f98fc3f49330fd344c3fd3b69febdf5fe8b2b2cfff52fffe4afffe5afffe46fffed628ff3b63fef7c6fc1ff4ef1ff5ef9ff4ef9ff5ef5ff4ef17faf74bfdfb95fefd5aff7ea37fffaa7fffa67fbfd5bf7fd7bfffd0bfffd4bfeaf9dfdbedd3f95641dd940c626a932a860f55f7ff456cf3f9a27a76d55cff4f7e4bb5bd50cfcb6f81b6b7d0f32d0c7b4b3ddfd2584f2b3ddfcab0b7d1f36d0c7b5b3ddfd6b01fa7e78f33ec27e8f9130c7b7b3ddf1eec09fdbf74c5d23fcad65c9b0ac026f1d90c6c2db4ad39d85acaeac0768cb6b5009b6cdf96606bad6dc780ed586d6b05b684b6b5162dc354a46dc920ae58291baad65b1cf77af5339336f1f356a9f59638e26d1b3fef30b5de760e78557c1ca7d7550c7173bcb6b501db09da5602b613b5ad2dd84ed2b676603b59db8e03db29da763cd84ed5b613c0769ab69d08b6d3b5ed24b09da16d2783ed4c6d3b056c6769dba9603b5bdb4e035ba9b69d0e36dde4066780ed1c6d3b136ce76adb59603b4fdbce069b9ce395824dcef7da834dcefdce019b9c079eab6daaed685d00feb45ddaad943f69b3c1f60369afc17681b4d560bb50da69b05d04bec57631b43562eba06dd26ea9fff5d4f96410d77e529eda4f7ac5bdde70cd6abdbde35f6feaf95d9fa04eeb24f8e9055af5d5f918fbb67442df726e237ec45e08f9eba1ac94133de4d823ecea1853a9f37d332cd7d358ae18ca545aea9f0ce2ad7f6f83a7b7c1dc02f26e62b673998fd97a4f59c7ec00286bc69e9c0735c598bd09381cc46c858fd97a4f59c7ec08286bc69e9c0b37c598bd17381cc46c7737315b5ee663367d6f2c08ecb127d7434d3166470147fc31dbc5c76cfda7ac63f639286bc69e5c1337c5989d0c1cf1c76cb7eefedca0de53d6313b0fca9ab127f7679a62ccbe081c0e6276986f67eb3d651db30ba0ac197b72afb029c6eccbc0117fccf67014b39d7dcc06e9e79c41608f3db96fdd1463761170c41fb3c3fcfdd9fa4f59c7ec4e286bc69e3c43698a31bb41e7d573869febe70c6780ed17da7626f0c61fdbd5e58e62bb938fed74ff8f20b0c7a83ccf6b8ab1fd91ceab38fe15f44710dbafa5af02d87ea36de780edb7da762ed4cbc13ed0cdef03f5af53b6fbc09fa1ac19cbf26cb929ee03bf000e0731dbddc76cfdeb946dccfe17286bc69ef473688a31fb25703888d91e3e66eb5fa76c63f6dfa1ac197b17ea7c538cd9ffaaf3ea7ce18ffa7ce162b0fd49db3a80edcfda7609d8fea26d9782ed0b6deb08b62fb5ed32b07da56d6560fb5adb3a81ed1b6d2b07db5fb5ad33d8fea66d1560fb56dbba80edefdad6156cffd0b66e60fba7b67507dbbfb4ad87b6a9e75dd2f7eaa0b6b502fe6410efb6957e97b26e99ef9403df2586ef921cfa6e67f86e67f15deec077027cc85460cc27215fee96a7ac1878d05745fcbe3aabba770eea5ff70ae0e9e2a0ee09f0511f9e2ec0d3357e9ed4f1b35bfceb4d6de3ce86a609f0d519ead5dd41bd0ac097ac5be6c55f31d8b06ded6e61ec113f637901f89275cb7c0f60141bb6f5f22e95ec3fea787841411daf837d29754e24fee4db55c251017629d3a97d1d5b07cd5604ffc7e35e57c3e6282e537121be64dd322ffe8aa03e5d73cf585e5fc62e06a3ab36a2007cc9babdefbaed20793c8ebbb8d6b1b569e2bb570e7cf7307c5718beb1ed9429d3b1ad0730c77ecda98f6d95f1afb70caf4fe4da50fce0f9035ec3c55527f42dd786e247ec8590bfb9a0aeac94133da41d167615cbb22d91dd5caebbb15c3194e965a97f3288b7fe95064fa5c1acb6c915702c74b03fa462a097c121f315a05d658476bd403b29732168e7aa3deb69f0c87c57e09176ac1bf0b8ba268ae2c9c5f5d8917ce3392c5e3fcbfff13cc0d5f6ea6430cabc6d7bf50046dbb98a83eb998ce72a5d80516c3d81a7b323cda2b66b6712df0e6225d51e890f393797fdb72bd8a54c0ffd429d6a2b1f84b6d2458c603cca54df6bdef8b75379ea1abc4b163cb8ed1c5c577572148f6578ffe6bb20de5833dba52e865651f7785cb5e59d0d1e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f17912f6db92725d4918cdfe6faeeef3a7be61a8d725eb57cf75feb7d3fe60e565d83f46fa415c6cd4b910ca1437ab2bfbffa03f98f99c0afb487675ab5d6a5b627fcc24cc8b3fec6b85db92a1bf53696cbed3dfa274f1bc4d7d034c7d47d3ecfbd9d5a2a98bfecfa86981a129f6c7bfc4e051715ad9bc8ecdc5b3bf6c9f45a256928ff3d95e71608ff5f8b74bf921cfac9b0587b61f789c71d57f47da6a795edecbf05d08654e6f56b76da46f958c33dbd9580efbfdc8ba65998bc15e69acbb442f2b1c2d8cf5778365a5cc59d0a6ee6b56a79983b6b23cdbbeebf8dc3cfee370fa397ee72c783a018f8b76c6d1f9c621df5b8dfb39bed93fcd761e2365b06f9f837e9519fb3b893fcfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccfccc8ac77cd68aefd7569030e6a8ef43ea79867cab4cd69ffa5e70b33abfae9fc3c933a70e469df1ddd1ffdeacaeec169d2f0a0eefef10b52d5d7d9f226a5b8a3ffcf60c3e0b72f15cb7007cc9bacb2d5a48be3436dfe5cec68690e7f89d0d5d2b2c9abada5ff1192b6a8afb6b1783079f8d467ddba7dcb0b9ec3b141517e20ff7a572b0491edf8f76b19df15862f6eb117ff8fcfa475adb92c0d5b62f2f73d96ee0775392c1e1f18ddf53f939b47dbfd479ecc3817d47beb6fc5fa64ccfa9453f556707dfd72c2b8075c9f6b57ddbb31fb0c6e4bb13aeab40a77e86068590ffaa595d59292765456b6157fb887c0306d9cde5ba18cb1543993e96fa278378eb6f7e6bb5afc1acb6c96f20cebe86e3bfab36a94f84461783465206cf835cf5c933db48b37f23f6db6b6994c1731629f32f68a3a2fa8fdafa1cba3a8e45f539b49d1b770246b38e663fcf7cefa7f51fd05ec4dd4feb3f2086b09f5660acbf03ac5fb85a06d1c71629f37f8df59be7e4b20cf603fbcffe4ff03d97729dcfe69cfc685d5fd9cec971b9a8ba2b66fc0e5a3246668c0964c1f3042973acd65ab6596504770fcbb2c511cb8a56e6b7c28a82c3f573f39db5f43edfd7a88bc4357e835cca1c0f757173de923e0774f54db924d449e5cb2d759532a7c0be769ace27603be17e7b91e5ff32653a07c431dc2f8fbfcea9ed7b057026c10ffabe125863f2dd097dcb39a0f8117b21e42f6c5e5756ca891ea2b5b0ab7d44cea390dd5cae97b15c3194e967a97f3288b7fe971b3c971bcc6a9b9c09717611f44377d556f78bd0a803682465f09ea2ed3ba0b6638cabbefd51c798726034db4d3c4eba6433df1332efabd9ce11a48c2c8be708dda09d4d58ca9af70be5781967bf617c57a21bf8c577255c7dbbb927e89684793c2f389abe5d7cc756f98b1a33a1670e7c478d99900bdfed0cdfed72e8db6bee3567d2dcc11804a9f7cff09ba56aca745e8ae312c872cd80d1c5580e89e0d06f8f1f8911c77790e59a03a38be343b6df3eef068cb25c2130ba78b714c7dfa80f237e63188ff3c2e8e05bb19d1afaad58bca7d7121899ded9c46753c700a38b7ba80d7d570fcfe75bc1afab71893a67c188e7f3b25c6b6074716f1c9f0dd68711af8b64b96381d1c533ac6cc777c26fcfe3bd65978c998eed8efba294677befa5d22d4fc6730df4ed605cc39416789ff1485af476cb93f1dc077d3bb8ef97d202c7193c9216f86cd0c5b88789e0d0e77047e2c1e797b2dc71c09874c4d8370bc62430fee7bd6260ece788319905633f6014fb09c0e8e0fe6b8ab15f168c789f52963b1118af70c47879168c5700a32c771230bab8979a00bff561bc121865b99381f12a478c5766c1781530ca72a700e3d58e18afca82f16a6094e54e05c66b1c315e9d05e335c028cb9d068cd73a62bc260bc66b8151963b1d18af73c4786d168cd701a32c7706305eef88f1ba2c18af074659ee4c60bcc111e3f55930de008cb2dc59c078a323c61bb260bc111865b9b381f126478c3766c1781330ca72a5c078b323c69bb260bc191865b9f6c0788b23c69bb360bc051865b97380f156478cb764c1782b30ca72e702e36d8e186fcd82f1366094e5ce03c6db1d31de9605e3edc028cb9d0f8c773862bc3d0bc63b805196fb0130dee988f18e2c18ef04c63b2c8cfd1d31de9905637f6094e52e01c6bbe2674c5d4bf7cf82f12ee0b93b7e9e94667765c173b75b9ed477f5eeb2f8ba277e5fa96d3120a87fddef019e81f1f3a4b6c53d59f00843312c879add1b3f634ab3815930de0b3c83e2e74969766f163c8340b37b2d9add173f634ab3415930de073c83e3e74969765f163c8341b3fb2c9add1f3f634ab3c15930de0f3c43e2e74969767f163c43823acdeeb76836347ec6946643b2601c0a3c55f1f3a4341b9a054f156836d4a2d9b0f819539a5565c1380c78aae3e74969362c0b9e6ad06c9845b3e1f133a634abce827138f08c889f27a5d9f02c78468066c32d9a3d103f634ab31159303e003c23e3e74969f640163c2341b3072c9a8d8a9f31a5d9c82c184701cf83f1f3a4341b9505cf83a0d9288b660f39627c300bc6872c3c717f27fb418baf318eea3e3aa87fdd85a11896c37e12631d318ec982712c30ca72d84fa2c611e3d82c186b8051964b3866ccd44fa2067c8f8bdf77aa5daa09eaafcf38b73c19fb49a0eff18eb41817d45f8bf16e7932f69340df131c69313ea8bf16138067a2032d12e0a33e3cc2500ccb613f895a478c13b360ac0546590efb494c72c4589b05e3246094e5b09fc4c38e182765c1f83030ca72d84f62b223c687b3609c0c8cb21cf69378c411e3e42c181f0146590efb493cea88f1912c181f0546590efb493ce688f1d12c181f0346590efb493cee88f1b12c181f0746590efb493ce188f1f12c189f0046590efb493ce988f1892c189f0446590efb493ce588f1c92c189f0246590efb493ced88f1a92c189f0646590efb493ce388f1e92c189f0146590efb493ceb88f1992c189f054659ee21c78c99ae5f9e6de2bea3ae559abaefa8eb92a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997c3fe7c077027cc85460cc27212f0cc5b0dc439eb14933224f697c3c655877f4f53c41dd9fb7f01438aa3bfa7a81a0eec2d0d8189f6b048c0f350246af63ba0f62431815cf8bf0ff648c3c2f64c1f322f04c71c4f362163c5380676afc3ca9989a92058f3014c3720f3502c6e71a01a3d7d1ebc8c4e875cc1f1d3da367f48c9ef16830368636dc33368a782c6f28a3e299163f4f4ab3a959f04c03cd64b9bb1b01e3f38d80f139b78ce50d65543cd3e3e74969362d0b9ee9a0992c77b75bc6f286322a9e19f1f3a4349b9e05cf0cd06cba4533078ce50d65543c33e3e7496936230b9e99a0d90c8b660e18cb1bcaa87866c5cf93d26c66163cb340b39916cd1c3096379451f1cc8e9f27a5d9ac2c78668366b32c9a39602c6f28a3e299133f4f4ab3d959f0cc01cd665b3473c058de5046c533377e9e946673b2e0990b9acdb168e680b1bca18c8a675efc3c29cde666c1330f349b6bd18c95f1a146c0f85c236074ac6379431915cf7c473cf3b2e0990f3c2f39e2999f05cf4bc0f372fc3ca9987a290b1e612886e51e6a048ccf350246afa3d79189d1eb983f3a7a46cfe819b3637cbe1130fa6ded1959191d5c5f657c17e9a526ee3bea5da4a6ee3bea5da4a6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbf12bfeff26cbf31f30af0b8f8e68da37a96a9f5beaad7f55d8cfa29ad5e33b47ac9d0aa18cabc0afabde640bf02f02beb9679f1972df30504cc8e7c97b709d7d11aea2f3e9e33f450fe5f7754f7a8b6fef526ee3baaad6feabea3dafaa6eedbc7b98ff37cf0ede3dcc7793ef8f671eee39cc537e65b0475e7edf2fd53b58e3774be50cf4bf9e7c12e651e3f26fd5b12f87dc8856fbf0ff963453ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7395f9c633c8ccf014f60f0041978a691f15493f10c20e3b9818ca72f19cf7c329e47c878ba93f18c26e3b99f8ce776329e67c978ae26e3799a8ca71319cf44329ee9643c23c8780692f1dc44c6d38f8ce731329e4bc978ba92f18c25e3194ac67327194f1919cf8b643cd792f1e4e2fda56c783a92f15492f14c22e39941c633928ce722329e41643c1792f1dc42c67305194f1b329e12329e0a329e27c878c691f10c23e3b98b8ce77a329e3e643cf3c8782693f1f420e39949c6f32019cf14329ec1643cb791f15c45c6733119cf53643ce5643ccdc9782690f10c27e3b9878ca70319cf8d643c49329e47c978ba91f1cc22e31943c633848ce70e329e17c878ae21e379868ca717194f2d19cf03643cf792f15c40c6733319cfe5643c45643cc5643c5dc8781e27e3994dc65343c633958ca78a8ca73f19cf75643cbdc978e692f13c4cc6d3938c671419cf7d643cb792f15c49c6731919cf93643c6dc978da91f17426e39943c65340c093080e1fc32401ff7f056ccd8c65d5675f6bdbd7fdff4d6d6f06cbbca5f3cd2deb7e136cf22dd9b72ccba24e6f425d923a5ff6fda6944ee82b09f3e2af0838de22e19943c6d3998ca71d194f5b329e27c9782e23e3b9928ce756329efbc8784691f1f424e379988c672e194f6f329eebc878fa93f15491f14c25e3a921e3994dc6f338194f17329e62329e22329ecbc9786e26e3b9808ce75e329e07c8786ac9787a91f13c43c6730d19cf0b643c7790f10c21e31943c6338b8ca71b19cfa3643c49329e1bc9783a90f1dc43c6339c8c6702194f73329e72329ea7c8782e26e3b98a8ce736329ec1643c53c8781e24e39949c6d3838c673219cf3c329e3e643cd793f1dc45c6338c8c671c19cf13643c15643c25643c6dc878ae20e3b9858ce742329e41643cf23d4f169e91643c33c8782691f15492f17424e379858ce75a329e17c978cac878ee24e3194ac633968ca72b19cfa5643c8f91f1f423e3b9898c672019cf08329ee9643c13c9783a91f13c4dc6733519cfb3643cb793f1dc4fc6339a8ca73b19cf23643cf3c978fa92f1dc40c633808ca79a8c671a19cf780bcf2b8e78e47d7759b7ccbf42e2dbc1762853eb7ddb519dded1eb6aa1d72bfce2af10ca4c3d36fdab9e0fe1b2c2657e9f00efc5bd031abde3a82eb23d0a8ced83bedf70e4dbfc5eb3ccbfd1c47d9718be4bf2c4773bc377bb3cf1ede3dcc7793ef8f671eee33c1f7cfb38f771cee4dbc1b541397e274da602633e0979bc5e70f17d3947f53ce43af1bb18f5535abd6b68655e5b154399b741bf771de867bbf69479f1972df30504cc1817a541bc71b120fe3a95ab7e99ad41d70586be58af858e348d3a862c6ce2bea38e214ddd77d431a4a9fbf671eee33c1f7cfb38f7719e0fbe7d9cfb3867f2fd9ecec778dd58863ed4f345b91e780ffc2ed6f98218fdaa752dd2eb2ad4eb168ec5609732cd12e9df92c0eff32e7cfb7dde1fdbf2c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38e78b73332ffdc52f043657fdf9a3623117ef121c4ddf51b1d8d47d47c56253f7ede3dcc73993ef250e7c27c0874c99faf82d019e450e781cd533f56c63a951a7578c3a1543193cc62f7550cf02f02beb96f9a5c023d378e0711107f5d9e6c8338d8ca79a8c670019cf0d643c7dc978e693f13c42c6d39d8c673419cffd643cb793f13c4bc6733519cfd3643c9dc8782692f14c27e31941c633908ce75d329e9bc878fa91f13c46c67329194f57329eb1643c43c978ee24e32923e379918ce75a329e8e643c95643c93c8786690f18c24e3b9888c671019cf2d643c5790f1b421e32921e3a920e379828c671c19cf30329ebbc878ae27e3e943c6338f8c6732194f0f329e99643c0f92f14c21e3194cc6731b19cf55643c1793f13c45c6534ec6d39c8c670219cf70329e7bc8783a90f1dc48c69324e379948ca71b19cf2c329e31643c43c878ee20e379818ce71a329e67c8787a91f1d492f13c40c6732f19cf05643c3793f15c4ec65344c6534cc6d3858ce771329ed9643c35643c53c978aac878fa93f15c47c6d39b8c672e19cfc3643c3dc9784691f1dc47c6b3908ce756329e2bc9782e23e379928ca72d194f3b329ece643c73c8780a087812c1e1effe27e0ffef824dde517f056ccb747e11d89a597c34d7f9a5602bd47959c731617abafde1eb469d5cbd978fbe92302ffe8a80631909cf1c329ece643cedc878da92f13c49c6731919cf95643cb792f12c24e3b98f8c6714194f4f329e87c978e692f1f426e3b98e8ca73f194f1519cf54329e1a329ed9643c8f93f17421e32926e32922e3b99c8ce766329e0bc878ee25e379808ca7968ca71719cf33643cd790f1bc40c6730719cf10329e31643cb3c878ba91f13c4ac69324e3b9918ca70319cf3d643cc3c9782690f13427e32927e3798a8ce762329eabc8786e23e3194cc633858ce741329e99643c3dc8782693f1cc23e3e943c6733d19cf5d643cc3c878c691f13c41c65341c65342c6d3868ce70a329e5bc8780691f15c44c633928c670619cf24329e4a329e8e643cd792f1bc48c65346c6732719cf50329eb1643c5dc9782e25e3798c8ca71f19cf4d643cef92f10c24e31941c6339d8c6722194f27329ea7c978ae26e379968ce776329efbc9784693f17427e379848c673e194f5f329e1bc8780690f15493f14c23e3199f231ef56ebbbc3b1900174e49c82f059e771df038aa67197ed7e0bb18d7abb45a6e68b5d0d0aa18ca2c01fd963bd0af00fccaba657e39f0c8f991b0e237159e256114dbbb8e791250679932ed03cb81c7c53ee9a89ea9585d61d4e9598bee5206637585837adaf61d995f013c2fe8bcb026a0dc0b248c625bea98270175962953acae001e17fb8ea37aa66275a551a7172cba4b198cd5950eea69db77647e25f0bca8f3c29a80722f92308a6db95b9e8a04d459a64cb1ba12785cec3b8eea998ad555469d5eb4e82e6530565739a8a76ddf91f955b01d3cb367b6312b1ee96f2bac0928378584516c2b9cf2549425a0ce32656ac756018f8b76de91eea9766cb551a72916dda50cc6ea6a07f5b4ed3b32bfdae2bb3488578b35f5d0628d85674d8eb5107fd9322f6984cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc0c3a2b1e19ff4e5813506e2a09a3d856bae549bd17343538742a30e693905f033cab1ce8e3a89ea93ee46b8d3a4db5e82e6570ff5aeba09eb67d47e6d7c276c88679752364f63a378c59f14cd379614d40b969248c625be59627d58e4d0b0e9d32b5636b81c7453befa89ea9766c9d51a76916dda50cee5feb1cd4d3b6efc8fc3ad80e9ed933db9815cf749d17d604949b4ec228b6354e79ca53ef374e0f0e9d32b563eb80c7453bef48f7543bb6dea8d3748bee52066375bd837adaf61d995f0fdb211be6d58d90d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63ae78fce8a6786ce0b6b02cacd206114db5aa73c9d53cf1d6604874e999e3bac079e75b1f3a49f3b38d03df5dc618351a71916dda50cee5f1b1cd4d3b6efc8fc06d80e4d9d79752364f6b1911b661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e6266880dc53353e7853501e56692308a6d9d5b9ed4770f6606874e99faed6c009ef50ef47154cf54bf9d8d469d665a749732b87f6d74504fdbbe23f31b613b7866cf6c63563cb3745e5813506e1609a3d8d6bbe549b563b38243a74cedd846e071d1ce3baa67aa1ddb64d4699645772983b1bac9413d6dfb8ecc6f82ede0993db38d59f1ccd679614d40b9d9248c62dbe09627d58ecd0e0e9d32b5639b80c7453befa89ea9766cb351a7d916dda50cc6ea6607f5b4ed3b32bf19b68367f6cc3666c53347e7853501e5e690308a6da3639e04d459a64cedd866e071d1ce3baa67aa1ddb62d4698e45772983b1bac5413d6dfb8ecc6f019eb93a2fac0928379784516c9b1cf324a0ce32658ad52dc0e362df7154cf54acbe6fd469ae45772983b1fabe837adaf61d997f1f78e6e9bcb026a0dc3c1246b16d76cc93803acb942956df071e17fb8ea37aa66275ab51a77916dda50cc6ea5607f5b4ed3b32bf1578e6ebbcb026a0dc7c1246b1613b36df114fb1c1536cd1e268f956f3bd74be48ff26e0ffbd80d155db32df6094798c71e475ad5989c153626876347dabfa57ea7c1bfd8bdbab121819b657490e346b67f0b433343b9abe9516bd75beadfec5edd51b1819b6573be071d03e57240c1e35653a766f75ac8fa37aa68edddb02bbee781c923278ecdee6a09eb6730999df06dbc1337b661bb3e2e9aff3c29a8072fd4918c586e7fcdbe3e7a948183c6acad48e6d77ac8fa37aa6dab10f02bbeedb41772983b1fa81837a16805f59b7cc7f00db211be6d58d90d9ebdc3066c53340e7853501e50690308a6d1bf0ec889fa72261f0a829533bb6c3b13e8eea996ac7760676dd7780ee5206f7af9d0eea59007e65dd32bf13b64336ccab1b21b3d7b961cc8a67a0ce0b6b02ca0d246114db07c0b32b769ef4982fc8a3a64cedd82ec7fab8a967ba1ddb1dd875df05ba4b19dcbf763ba86701f89575cbfc6ed80e9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99b99915cf209d17d604941b44c228b69dc0f361ec3ce9e70ec8a3a64ccf1d3e74ac8f9b7aa69f3bec09ecba7f08ba4b198cd53d0eea59007e65dd32bf07b68367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b666e66c53358e7853501e50693308a6d37f07c143f4f45c2e05153a6e70e1f39d6c7513d53cf1df60676dd3f02dda50cc6ea5e07f52c00bfb26e99df0bdb61af67f6cc1666c53344e7853501e58690308a6d0ff0ec8b9d27fdfc1479d494a91ddbe7581f37f54cb763fb03bbeefb40772983b1badf413d0bc0afac5be6f7c376c88679752364f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdcef9a3b3e2a9d279614d40b92a1246b1ed059e8f63e7e95c963078d45460cc2721ffb1637ddcd433fddce14060d7fd63d05dcae0fe75c0413d0bc0afac5be60fc07668eaccab1b21b38f8ddc30fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c731433436c289e6a9d17d60494ab266114db7ee0f9247e9e8a84c1a3a602633e09f94f1cebe3a89ea97e3b0703bbee9f80ee5206f7af830eea59007e65dd327f10b68367f6cc3666c53342e7853501e54690308aed00f07cea802761f0a829533bf6a9637d1cd533d58e7d16d875ff1474973218ab9f39a86701f89575cbfc67c03352e7853501e54692308aed20f0b888d502ed0f7964fe5302df6abe46e78bf42f6eaf1a6064d85ec539d0acc4e02931343b9abe55fdc7e97c1bfd8bdb6b1c30326caf921c68d6cee069676876347d2b2dc6eb7c5bfd8bdb6b3c30326caf7639d0ec68b6874773df3e9a71ea353f7a9a171c45cd0b8ea2e6055e732acd1d1c5fcaf1581600034e49c87f063c9fc7cf93bac7f559163c9f03cf0fe3e7e9e4a89e656abd3f02f6b8d6abb4fab1a1d5678656c55006197eec40bf02f02beb9679f1e7993d7314339edb0a6b02ca7d4ac2283669835cb51baaee97ea75c9fa5b84e9e009757e5d3c7bc0fbae2df47a8543fc1542997b4aebca7eaed98ae0ffb2dd547d0e183647ef0377b23d039379f15714e4ee3e68a6fbb2a8858b6737d91ef70f5878be8b8fa70cf773f4b5df51ddb3798eb6dfc21363dd3b453d43dc177fdd53ed4747bd2e59bfda47bf38c1a9e615b8ef49fbd1d1a8732194e9525a57f61b683f6c6d85eb7d53cec9cd7db35950d79e0957a9b69bcf57bed37629f70994c736a797fec5fdb317d4d555bb18758f09db45b3ed76a9bdf98ccff45d0cba7c42aa99ed3905ea5869e1ae24e0c678cce57e26ebb63d23ab347464d30cb7f527161d7b5bb87b137033eed7bd0d1dd9343bd27edddfc2dd9f809b71bfee6fe8c8a6d991f6eb0116ee0104dc8cfbf500434736cd8eb45f0fb4700f24e066dcaf071a3ab26976a4fd7a90857b100137e37e3dc8d0914db323edd7832ddc8309b819f7ebc1868e6c9a1d69bf1e62e11e42c0cdb85f0f090ed5914db323edd75516ee2a026ec6fdbacad0914db323edd7d516ee6a026ec6fdbadad0914db323edd7232cdc2308b819f7eb11868e6c9a1d69bf1e69e11e49c0cdb85fd7b7df3eeb7e5d63e1ae21e066dcaf6b0c1dd9343bd27e3dcec23d8e809b71bf1e67e8c8a6d991f6ebf116eef104dc8cfbf578434736cd6cfbb5a3f7f2cab37d4ff0a0537dd2e3351fcc82e763e07111538ee2a0cc513f9754dfd47d8656070dad701c8cfda09f83be3019dfef177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f11b87f87c45ca7d42c228367c26e5e23ebfaafb657a5db2fe1661ea71529ddffdb1fb2d2f2b30fc258143fc1542996667d795edadd98a82c3b71b8e6b8ddb726fec75486f4b33fe655efc15417df6018f83f7f3533cfb0d9efd162df0bdd3787c970f73a3717999fa3e5eeba06e3bef35ea839a7e14bbff43352d3034fdc8b1ef4470e8f614069c9290471e17cf861dd533d516ec31ea646a5c0c652e807aee7150cf02f02beb96f93dc023133e9377158381c11358f491a919194f3519cf00329ef3c8786e20e339858ca72f19cf23643cddc9785a93f18c26e3b99f8ce776329eb3c978ae26e3c9c53978363c4f93f17422e3399e8c6722194f2119cf08329e03643c03c9787e40c6731319cf25643ca791f1f423e3798c8ca72b19cfa5643c09329eb1643c43c978ee24e32923e3694fc6732d19cf89643c95643c1dc9782691f1b424e31949c6731119cf20329e0bc9786e21e339838ce70a329e27c8782ac878da90f19490f18c23e31946c6731719cfb9643cd793f19c4cc6d3878c6732194f0f329e56643c0f92f10c26e3b98d8ce72c329eabc8782e26e3798a8ca79c8ce738329e09643ccdc9788693f1dc43c6d3818ce77c329e1bc9784e25e34992f13c4ac6d38d8ce758329e31643c43c878ee20e32925e3b9868ce719329e5e643c2790f1d492f1b420e379808ce75e329e0bc8786e26e3399d8ce772329ec7c978ba90f11491f11493f1d490f15491f1f427e339878ce73a329e93c8787a93f13c4cc6d3938ce718329e51643cf791f1dc4ac6732619cf95643c9791f1b425e36947c6f324194f67329e02029e4470f8b79812f0fffd60936f067d0cb66696f5c9735829af8e8bd3db1fbeee6696757f6461409d3e84ba2475beecfb4d299dd05712e6c55f11707c44c2d3998ce749329e76643c6dc9782e23e3b9928ce74c329e5bc978ee23e31945c6730c194f4f329e87c9787a93f19c44c6731d19cf39643cfdc978aac8786ac8788ac9788ac878ba90f13c4ec6733919cfe9643c3793f15c40c6732f19cf03643c2dc8786ac9784e20e3e945c6f30c19cf35643ca5643c7790f10c21e31943c6732c194f37329e47c97892643ca792f1dc48c6733e194f07329e7bc8788693f13427e39940c6731c194f3919cf53643c1793f15c45c6731619cf6d643c83c9781e24e36945c6d3838c6732194f1f329e93c978ae27e339978ce72e329e61643ce3c8784ac878da90f15490f13c41c6730519cf19643cb790f15c48c633888ce722329e91643c2dc9782691f17424e3a924e339918ce75a329ef6643c65643c7792f10c25e3194bc69320e3b9948ca72b19cf63643cfdc8784e23e3b9848ce726329e1f90f10c24e33940c633828ca7908c672219cff1643c9dc8789e26e3d947c6733519cfd9643cb793f1dc4fc6339a8ca735194f77329e47c878fa92f19c42c6730319cf79643c03c878aac9789a91f18c3778f0ffeadd30393f926f0715c2ff07ebcee5257a5d5246de5152f7ba761b3655df5d8eeabb3ba89b9230bf0bea2becbb8167b7239e0f0d1ed37711e42b41b39d864d31ee70c4b8d36094f91dc028faed049e9d8e7876193ca6ef22c8f706cd3e306c8a71bb23c60f0c4699df0e8ca2df07c0f381239e1d068fe9bb08f2fd41b36d864d316e75c4b8cd6094f9adc028fa6d039e6d8e78b61b3ca6ef22c80f00cdde376c8a718b23c6f70d4699df028ca2dffbc0f3be239ead068fe9bb08f20341b3cd864d316e72c4b8d96094f94dc028fa6d069ecd8e78b6183ca6ef22c80f02cd361a36c5b8c111e3468351e63700a3e8b71178363ae2d964f098be8b203f18345b6fd814e33a478ceb0d46995f078ca2df7ae059ef886783c163fa2e82fc10d06cad61538c6b1c31ae3518657e0d308a7e6b8167ad239e75068fe9bb08f255a0d96ac3a6185739625c6d30cafc2a6014fd5603cf6a473c6b0c1ed37711e4ab41b395864d31ae70c4b8d26094f915c028faad049e958e7856193ca6ef22c88f00cd961b36c5b8cc11e3728351e69701a3e8b71c78963be25961f098be8b203f12345b6ad814e312478c4b0d46995f028ca2df52e059ea886799c163fa2e827c0d68b6d8b029c6458e18171b8c32bf081845bfc5c0b3d811cf1283c7f45d04f971a0d97b864d312e74c4f89ec128f30b8151f47b0f78de73c4b3c8e0317d17417e3c68b6c0b029c6771d312e301865fe5d6014fd1600cf02473c0b0d1ed37711e4ef009bf0f604db3b3adf036c6feb7c77b0bda5f3ddc0f6a6ce7705db1b3adf056cafeb7c05d85ed3f9ce607b55e7cbc1f68ace7702dbcb3adf076c2fe97c5fb0cdd7f924d8e6e97c3fb0cdd5f9cbc13647e7af00db6c9dbf126cb374fe2ab0cdd4f9abc13643e7af01db749dbf166cd374fe3ab04dd5f9ebc13645e76f00db8b3a7f23d85ed0f99bc0f6bccedf0cb6e774fe16b03dabf3b782ed219dbf0d6c77ebfced603ba8f37782ed539dbf0b6c9fe9fc3d60fba1cedf0bb6cf75fe3eb0fd48e7ef07db8f757e28d87ea2f3c3c0f6539d1f0eb69fe9fc0360fbb9ce8f02db2f74fe41b0fd52e74783ed573a3f066cbfd6f9b160fb8dce4f00db6f757e22d87ea7f3b560fbbdce4f02db1f74fe61b0fd51e72783ed4f3aff08d8feacf38f82ed2f3aff18d8bed0f9c7c1f6a5ce3f01b6af74fe49b07dadf34f81ed1b9d7f1a6c7fd5f967c0f6379dc7b16effaef3a541bcedecb741dd540abec59f2af30f9d6f699491650ba1cc71ba83a37ac6a1be652aedb0b4cbca26edf03b609376f86db0493bfc16d8a41d7e136cd20ebf013669875f079bb4c3af814ddae157c126edf02b609376f865b0493bfc12d8923a3f1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493b3c1d6cd20e4f039bb4c353c126edf014b0493bfc22d8a41d7e016cd20e3f0f3669879f039bb4c3cf824ddae187c026edf0dd6093fde55bb049db7c106cd2367f0a36699b3f039bb4cd3f049bb4cd9f834ddae61f814ddae61f834ddae69f804ddae69f824ddae69f814ddae69f834ddae65f804ddae65f826d8cceff0a6cd236ff1a6cd236ff066cd236ff166cd236ff0e6cd236ff1e6cd236ff016cd236ff116cd236ff096cd236ff196cd236ff056cd2367f0136699bbf049bb4cd5f814ddae6afc1266df337607b46e7a5ad6e05367956aca6b2ef39e1383c78ce2f4cc920deb61fa724e49f86bacbd48c8ce725329e6a329e01643ce791f19c42c67337194f6b329e99643caf93f1fc958c673519cf2a329e6d643c5bc978ce26e3d947c6733c194f2119cf3c329e11643cef90f11c20e31948c6f303329e4bc8784e23e33948c67329194f828ce755329ee9643c2bc9785690f1bc4fc6b3858ca78c8ca73d19cf89643c95643c1dc9785a92f1cc21e31949c6f31619cf45643c83c8782e24e339838ca70d194f0919cf54329e71643c2f93f12c27e35946c6b3998c671319cfb9643c7bc8783e24e339998ca71519cf2c329e37c8780693f19c45c6b3808ce762329ee3c8789a93f1cc27e3594ac6b3848ce75d329e8d643c1bc8783a90f19c4fc6b39b8c671719cfa9643cc792f1cc20e3798d8c6708194f29194f2f329e13c8785a90f1cc25e3594cc6b3888ce76d329ef5643cebc878be25e3d949c6b3838ce774329e22329e62329e69643c35643caf90f15491f1f427e339878ce724329ede643cc790f1cc26e3798f8c672119cf9b643c6bc978d690f17c40c6b39d8ce74c329ecbc878da92f1b423e39942c65340c093008e006cf2ffe660fb46e70f804dbed7b30f6c5febfc02b07da5f3cf80ed498bad99854f18be019bbcdbfc14d8e4fee7d760937702be029b9c57897f353fbffde1fccd6019f1d3dcc28ffebeb270491eb7b72c930ce2dddee82b191cfe3da522e0788a84670a194f3b329eb6643c9791f19c49c6b39d8ce703329e35643c6bc978de24e35948c6f31e19cf6c329e63c8787a93f19c44c6730e194f7f329e2a329e57c8786ac878a691f11493f11491f19c4ec6b3838c672719cfb7643cebc878d693f1bc4dc6b3888c673119cf5c329e16643c2790f1f422e32925e31942c6f31a19cf0c329e63c9784e25e3d945c6b39b8ce77c329e0e643c1bc8783692f1bc4bc6b3848c672919cf7c329ee6643cc791f15c4cc6b3808ce72c329ec1643c6f90f1cc22e36945c6733219cf87643c7bc878ce25e3d944c6b3998c671919cf72329e97c978c691f14c25e32921e36943c6730619cf85643c83c8782e22e3798b8c672419cf1c329e96643c1dc9782ac9784e24e3694fc65346c6b3858ce77d329e15643c2bc978a693f1bc4ac69320e3b9948ce72019cf69643c9790f1fc808c672019cf01329e77c8784690f1cc23e32924e3399e8c671f19cfd9643c5bc978b691f1ac22e3594dc6f357329ed7c9786692f1b426e3b99b8ce714329ef3c8780690f15493f1bc44c6d38c8c67bc856781231ee9bb22eb96f9054ddcf72ec3f7ae3cf1bdc3f0bd234f7c6f377c6fcf13df5b0ddf5bf3c4f716c3f7963cf1bdc9f0bd294f7c6f307c6fc813dfeb0cdfebf2c4f71ac3f79a3cf1bdcaf0bd2a4f7caf307cafc813dfcb0cdfcbf2c4f712c3f7923cf1bdc8f0bd284f7c2f347c2fcc13dfccd7dfea3b4ff22d883dfa3701ffc7f1e3f639625c6030cafc3e60141b8effdecb114fd4b57b2f02df4a0be9bb28efd027e0ff95c0e82aa67a198c326f8b291c6fb4d2114fd43d874a02df4a0bf996a37c132b01ffc7f1535cc554a5c128f3b698c2f1bf7a3be289ba57d29bc0b7d242bee528df004ec0ff717c225731d5db6094795b4ce17813fd1df144dde3e94fe05b6921cf62e4997902fe3f00185dc5547f8351e66d31b515780638e289ba373580c0b7d242fa9e499fe504fc7f2030ba8aa90106a3ccdb626a0bf00c74c413754f6d20816fa585bc1b25efb026e0ff8380d1554c0d341865de16539b806790239ea87b8183087c2b2d06ebbc7c232701ff1f0c8cae626a90c128f3b698da003c831df144ddc31c4ce05b693144e7e51b9c09f8ff1060741553830d4699b7c5148ee73bc4114fd4bdd72104be9516553abf56ff26e0ff55c0e82aa686188c326f8b291cafadca114fd43de32a02df4a0be91b237d0613f0ff6a601ce288b1ca6094f921c028b655c053ed8827ea5e7735816fa585f4755fa97f13f0ff11c0e82aa6aa0d4699b7c5d40ae019e18827ea1efd0802df4a8b913a2fdff048c0ff4702a3ab981a6130cabc2da69601cf48473c51cf164612f8565ac8d807f24dbe04fc1fc7cb761553230d4699b7c5d412e0a971c4b3c8e05964d1e268f9565ac8b75f16ebdf04fc7f1c30ba8aa91a8351e66d31b50878c639e2897a96338ec0b7d242fa76bea77f13f0fff1c0e82aa6c6198c326f8b291c7f79bc239ea86750e373e03bea794a2e7c473d1bc885efa8fbdcb9f01d75cf3617bea3ee3fe6c277d4bdb45cf88eba2f940bdf51f73872e13bea7a3d17bea3ae3d73e13bea3a2a17bea3ae0972e13beafc3617bea3ced572e13beabcc3b7e7be3d8fdbf7d13c77c8d7f6fc681e438fe6b1c45f1bf86b835cf9f6c7127f6d902bdff97a6de0dbf3dcb7e772fd5510445f8f2d73e47b89e15be6f139cb1247be1719be651e9f192c72e47ba1e15be6f1fef74247be8b0ddf32bf3007be4b0cdf2539f4ddcef0ddcee2dbc5f64e04875e7f0b034e49c8630cbce780c7513dcbd47a17eb757d17e37a6df76dccfda518ca2c06fd5cb71db2ee4c6d47abf87c9725c0878c19a76cf22cf61db0491bfa36d8e419fb5b609376fe4db0c9f39d37c026cf7f5e07db489d3f0836790e8bfddfe559fa76b055e93cf6bb1ea2f35bc126fd92b0bfaff42ddb0236e91f88fd4ca58fe726b0493f5decdf287dad37804dfacb63bf3a79e7611dd8e4bd15eccfb54fe7d7804dbe5189fd88bed6f95560fb46e75782ed699d5f01b62774fe6eb07da9f3df82ed719d5f08b62f74fe3db03da6f38bc1f6179d7f0d6c7fd6f957c1f6a8cebf02b647741edf0bfb93ce7f08b6c93a8fef23fd51e77781ed619dc7f760fea0f33bc0f67b9d7f196c9374fe25b0d5eafc7cb0fd4ee7e7816da2cecf05db6f757e0ed826e8fc6cb0fd46e76781edd73a3f136c63757e06d87ea5f3d3c13646e7a7816db4ce4f05db2f757e0ad81ed4f9bf82ed173abf086ccd747e09d8647c41ecf321dfcc5c063619371bfbf2c85802e3c1768cce8f035b2b9daf019b7c676d24d864acde11604be87c35d88a74be0a6c72ae33046c32d6ca60b0c979c920b0b5d5f98160937388016093b10ffb834dbee7d91b6c32a67725d8e43bfebdc07692ce2f009b8c6fb60f6cf2cdb50360937184bf069b7c6bf91bb09daef34f834dc67c79026c67eafc97603b4be71f079b7c9ff30bb095eafc63606baff37f01db393aff67b0c9f8608f824dbee9f608d8641cde3f814dbe9d3c196c17e8fc1fc176a1ce3f0c361947e50f6093b1247f0fb60e3a3f096cf20de95ab05daaf3bf039b8c6d31116c97e9fc6fc12663184c005b279dff0dd8ca75fed760ebacf363c156a1f3bf025b179d1f03b6ae3a3f1a6cdd74fe9760ebaef30f82ad87ce4b3ba3f667b59fefd7f3c920def3ec8f8343a74ce7d9c2803c719eb716030ffada1b7bddcb53e7c8d21634d3eb9518da0bbef7c4ee3b7d7efe915e57a15eef1ec377219469ab1b07b59c1cf39bebe5f619cbe13d2159b72c7319d83f34d65da2ebfb91a3faee3198841b759032276826756cdcaef38ede872f57fb80c45a001ae29484bc30b8d1aabc0ccf85ebc3f311f0ec8d9d277dedeb222670df8afbdad7bc276ac65a3194d903fa7de8403fdcd765dd322ffe3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed933f3332b9efd3a8fcf9aa5dc7e1246b1ed051e17f7f9f139acac5f3dd75976769ddfbdb1fb3df4f95e0bbdde32a3ce8550e6eff0cc6995cee3389eb2dda2b6a583e78419b7a5f82b82fae0b3a0fd8e78f61a3c7b2d5a48be3436dfe5c3dc685c5ea6fab2a867ecfb0c5df75b3475b5bfeed5eb2a3034c5fdf56383079f8d1601ef27fa3701ebf904eae0601fcf1817e20ff7a5bd6093fcc7c0e8623be3b144da03791e8ecfa6a5cc3ee3b978fcdbbebccc65bbb11bea940c0e8fef42287310dabecf741efb86ec07dd7e67f9bf4c999e538b7eaace3be3af736afbee00ce24f841df1f006b4cbe0f791fa54027f123f642c8ff16fa734839d143b41676b58f489f4e643797fbd858ae18caecb2d43f19c45bff9d06cf4e83596d931f419cfd0e8effaedaa45d111a5d061a4999bda0d13e473c7b0d1ee1107faa8c6cff96461959b610ca7c096d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f147c068d651c5478f93ea78f7c6cedbb8fa7ffd1bb41771f7fffa3788a102e0088cf597c1fa85ab65107d6c9132ffd3388ebab8c6c06d69ea893a4b99ff05ed50c7d2743e9b73fda375dd1675aebfcb014f2238f4da5b4d998eef788cd9ed80c7513dcb6cc7ae0f8d3a1543990ba09e0ece6332be57bb137cbbd8e6a8859c43ed31b4288432ad4bd3bfd27644e988d7aa1fe5a42ee5d6f3c1324b5da44c49695d5d5a813d4e2697dbed03a8935aef5e4b5da5cc09a575ba9ca4f309d84e78dfe47ccbff65cad41ee0b836dbe2af736afb6e05ce24f841dfef036b4cbe0ff9ae869cef8b1fb11742febcd2bab2524ef410ad855ded23f2ce1fb29bcbed31962b8632db2df54f06f1d67f9bc1b3cd6056dbe4d4d2babcc491cb76737b844665a09194c1fbc7726cc7f7ee6cc7fdbd8eb8a38efb7b81d16c37f1dcc525db3e83cdbc876a3b1f9432784e26653a97a67f553b9bb09435ef0dbbb88f89ef9606508fc0a8ab4c18030eae0d2bf0da49da29f1d311ec7b755e74ee68685708657a97a67f1d9e775bef5d9ad777784d21dce6be85ef7e5c5e5ac7ade25eb6d35efd5b04b64ff56fabc0c9755a85ed9ea170d8ee195e5b5ac78ecb0ad7414b5dcc6be466c1e1f7d4bf33cae27db74ccba12f351d309651fa7e6a61da6bf86905cbc6f6ae46a7b2b228fe03c0f7b1c16cd355f6038cb9bd3a6fee2b786d2c65ee2e4dff4a9b649655dbfe8b13eaf491ed28da617b8231f931302675beecfb4da97dee80517f99177f8a51eef71c009ef8dbaef4fb4ad9dc07de073c2eda76476d74191e635bc5b6de1e55b6e3ffc78656397c5e6b3de69bcfdc5b19f9787c9757dbee3fd9b4d863e171f51c254a8b3d16dff169d17598ad9db36991cbbe0f515a7c68f11da31623f0be67262d765b785cdc8bcaa4c56e8beff8b4e85696e9b9066ab1cbc2e3eade439416e22f5be60f09985b19f9787c5754d9ee93d9b4d869e17175dd1ca5c54e8beff8b4e8d415efd165d262878527fefb7399b5d861f11d9f16dd7be03dbc4c5a7c60e171f54c374a8b0f2cbe638c8be1b67b39362db65b78b6e7588bed16df319e1f76b5dd6bb369b1cdc2e3e0be6b462db6597cc7a8c550bcef9a498bad169ead39d662abc5777c5a5475b1dd13b669f1be85c7d53de1282ddeb7f88e4f8ba1dd95ef2df5d0628b85674b8eb5d862f11de335542a2e36d7438bcd169ecd39d662b3c5777c5a54a7ceb536d5438b4d169e4d39d66293c5777c5a94a58ea91beba1c5460bcfc61c6bb1d1e23bc6b8485d4f6ea887161b2c3c1b72acc5068bef188f23a9b8585f0f2dd65b78d6e7588bf516dff169312275ff695d3db45867e15997632dd6597cc778cf2515176beba1c55a0bcfda1c6bb1d6e23b3e2d3aa78ea96beaa1c51a0bcf9a1c6bb1c6e23b3e2d86a79e89adae8716ab2d3cab73acc56a8bef18cf3b53edc5aa7a68b1cac2b32ac75aacb2f88ef1bc3375ff62653db45869e15999632d565a7cc7d876a6ce3b57d4438b15169e1539d66285c5778ce79d292d96d7438be5169ee539d662b9c5778ce79da9e3c8b27a68b1ccc2e36a3c91282d96597cc71817a9b673693db4586ae1599a632d965a7cc7785f2bd5762ea987164b2c3caec66b88d26289c5778cd723a97b7c8beba1c5620bcfe21c6bb1d8e23bc66745a973f045f5d062918567518eb55804bef7c5ee3bdd9f5b7c485fac4b0d2d0aa14ccbf6e95fe98b15a5a3ac03fb95615dde8bbd2ee97e650b23eaf21ed445ca14415d5a054ec6fba97054d754cc2c803aa9f57e62a9ab9469d7be4e97e3753e01dbe420e8768ee5ff321518f349c88b7eaaceefc45fe754acbe0d9c49f083bedf02d6987c7742df053a891fb11742be7dfbbab2524ef410ad855ded23efea3cb29bcb2d32962b8632ef5aea9f0ce2adff3b06cf3b0673eabd0788338923376d579ae9dd088d2e058da40cf6d9fbc4118fd9875038c49f2a23dbbfa55146962d843217431b85fd4aa59e89e0f07e938edab24ec82eeb9679f1570cb67dc068d651c5c741e8fb296345c83812ca26e3427486f574336caaaedd1dd5557cc9ba65be3b30ca3815dd72cf585e5fc6ae06a3e2e9e940331c7b43a64cc78b9ec0d3c3018fa37aa68e43bd8c3a7537ea540c65f0ddc65e0eea59007e65dd32df0b7cbbd8e6a8851c932f32b4288432d71ae78f513aca3a54fc76b3d4a58fe3bac8baa55dea9303df9586ef2e86ef4470e8760e82ccfb572530f776c0acd6db37fef596e1799bc494f8e90275ea071ac455275c979ce7f533b42d84fc7d709e27e5a4ac1cbf845dc5b26c4b643797eb692c570c65fa58ea9f0ce2ad7f5f83a7afc1acb6c9ed706ee7607f48c5401f8343e6bb80767d23b4eb03da49193cfe7573a45d6f83a7b7e15bf1c8394e2fb0c9b982f027e0ff9d73c06db67bbd2cdc62c371e26ce73a5de367cc78aed31518c5d61b782a1d69666eeb8b0c7df0b8dcd22823cb16429909706c4c58caaafdee8282ba7a35d7f6d8de1dd36d7a4b077ae1388d01e813181a06a097d4b385039e6383bab11a27d6d64c18fac0f0db87a71f3d0a5aa18189bf05966a34031be69b5b6c4170e8909485609321295b80ad99210b0e8529e565483b1772a11eb2ee4283b315b0c4e91b87f3942953e81c033c2e4259858e0ce9a943e7ee09a36a87637cb430381b123bea7fcd33948b5a97abed60ee1349983763b0d091ffe650df24cc8b3fb56d8a757edcd0610ff59bf0c0a431c3c7d64e44a1cc1d1bf305c1a11bc0fc8d12dcd54e87018015c6c6a185512f6c30e47fb2618e8d9fb302c7cc35b509c09f4cc7826ead1de8a6d62f63df0e1b3a7af4ad93aa468f1a76f5a4b1c36a47d58cc5add9ca502e6a4bcbff5b82cdd6c463593561b385cb1e63b1d9261c65b815d8e4c8d51a6cc2732cd89a435eca9b5bc649b89e07eb975d4afd4f89d34257fc98a02e04e470acda55b5ffaacfc7aad32035d4b11ada586d4e3574b1ba63a88626565fb153430faba186d5d0c2a705e9a183d550c16706e9a180d5d72e4a83f4d0bee7047543f7aae920709e1fa487e655b7692e0cd2a75d6a68dd0e417ae85c75eb52bdbaae3ef3a6dead57a7efeab6803ae5559778ea72449d82aa534f75fb42ddca52a774ea74599d0aaad3377539d2576bdd2f4c9787e98a305d19a6abc2747598ae09d3b561ba2e4cd787e98630dd18a69bc27473986e09d3ad61ba2d4cb787e98e30dd19a48777be2b480fbfae867fbe27480f0d7d6f901e36fabe203da4f4fd417ab8e9a1417a28ea61417a98eae1417a08eb0782f4f0d6a382f4d0b90f05e9a176c704e9e17ad570d86a986c357cb61afa570d13ac861456430daba18ad5b0c66a08643534f263417a18663564f393617a2a480fe9fc4c989e0dd373617a3e4c2f84e9c5203d3cb81a367c5a901e665c0d3f3e33480f573e3b480f6fae863d57c3a1ab61d2d5f0e96a587535ccbb1afe5d0d0bff7a98de08d39b41fa91847a14a31e51a8dbffea3198ba45fd5e90be75be38483fe2568ffc551708d5254475915919a4bb50a92e65aa8b9dea72a8ba60aa2ea9aa8baeeab2acba70ab2eedaa8bbf7ae541bd02a25e8951af08a957a6d42b64ea953af58aa17a4d54bd76a95e2356af55ef0dd2b7c5f707e947a5ea76b87a34a0e251ddbeff2c4c3f0cd3e761fa51987e1ca69f84e9a761fa59987e1ea4873056c31dabe192d5d0ca6ac865353cb31aca590d05ad8688fe63901e7a5a0d5dfd97203dfcf59761fa2a480fc1fd4d901e7efd6f61fa364c7f0fd33fc2f4cf30fd2ba81b4a1b1b8bd3740ba3af5282a1b5b5c3c78cab2dadad291d336974eda871a31f2d9d3caa766469cdc3c3278c185d331917fe5c2f2ce380f79b3061e8a3a5a3c6560f7fa4b466526d69cd88d2aa9a4963ab0f3950ff532f74c6e11e875657473bfbf7ef43fa7f1ae8b4b56efb6484f5eb32d7ada879030439ae210b756ddeb00a3da68f5272397b47fa5cb774e2e89adad2b2d2b1e1dff0e05a33797875c752fcdfc450e489b5a5136b874ea82d1d31a1664c69a78eb8de29c736a01205093730ed4e6b983825fa5b4a0d0ab1bd673740812fce6e18e97ffb3ea4ffa3814e5b9536a0866d1ab2507969c3082b4b23659938a9aa76c2d061b5d10bf7fb3e0b5fd3906aded5c06ab668df006789862c7451fb86115ed31067e3b37016fc7f2c09ce921c4f06009b2d6c6f00000027c81f8b08000000000000ffed9d77701cc795c6679118164b10cc99902c538ce06291c104e64c9992ac1c98409116495024942ccb922cc939e76c399de59cf359ce392739e7ecf2d5dd3f57bebaab725df76c3fe34373668d5dcd03df60df543d6ccfdbde79bffee64dcf6cf7ec201314973f1bcbb872adb1c705e72ef47ebf7bcd3fb6a52dc16de539393329e1ac4909676d4a38eb52c2599f12ce8694704e4809e7c494704e4a9033037c5cbc9353c69b4d196f63908ebccda584734a4a389b52c23935259ccd29e19c9612cee929e19c9112ce9929e19c9512ced929e19c9312ceb929e19c9712cef929e15c9012ce8529e15c9412cec529e16c4909e70529e1bc3041ce15c04963e417b9d7c7bbd725eef562f7bad4bd2e73afcb5d1bebdcbadde64a63ab8cb57aefadb6ccc6ec6079c17bafdd5887b14e635deebd16f75eb7b11e63bdc6fa8cad31b6d6d83a63eb8d6d709a6c34b6c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd825c69e606cbfb14b8d5d66ec72634f347685c772a5b1ab8c5d6dec1a63d71abbced8f5c66e3076a3b103c60e1a3b64ecb0b123c6068c1d357693b163c68e1b7b92b19b8d9d3076d2d8296383c64e1bbbc5d81963678d0d19bbd5d86d9e66b71bbbc3d89dc69eec71de65ec29c6ee36f65463f718bbd7d87dc69e66ec7e630f187bd0d8d38d3dc3d8338d3dcbd8b38d3dc7d8738d3dcfd8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab1d0b1d08af31f65a63af33f67a636f30f690b1371a7b93b1371b7b8bb1b71afb37636f33f6b0b1b71b7b87b1771a7b97b1771b7b8fb1f71a7b9fb1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb77639f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb92b12f1bfb8ab1af1afb9aa7f9d78d7dc3d8378d7dcbf9beed5ebfe3ead231ff5df7fa3df7fa7df7fa03f7fa43affea3defa8fbcf51fbbd79fb8d79fbad79fb9d79fbbd75fb8d75fbad75fb9d75fbbd7dfb8d7dfbad7dfb9d7dfbbd73fb8d73fbad73fb9573bafd63eb3589e180c2ffd41427d52c740af1d5727b1fd793b3b2754ebdea3d716e7af73ebf49a71fe7ab75eeff91bdc7a83b79d896e7da2e79fe2d6a778fea96e7daae79fe6d6a779fe196e7d86e7bfc0ad5f00feac7bafd8b0e28bf5d53a57067c949f35e0ab77be5af035d0e6c037c1f9eac147fbb7017c939c6f02f8263bdf44f0659d6f126969acd1f9fa83a472257fd06e3797f476dd5cc494e4790fd9ed3631f14e4d9ef7b0dd6e3303afcd8f696e5b39c89be9ce37057c339caf097cae0bfae731677db39caf197cb39d6f1af8e638df74f0cd75be19e09be77c33c137dff966816f81f3cd06df42e79b03be45ce37177c8b9d6f1ef85a9c6f3ef82e70be05e0bbd0f916828ffacb45e0bbc8f916838faeed5ac047d77917808faef92e743edb4f4ccc403ce7a73e2a8c47fd33f81e4f7d33f89650bf0cbe8ba94f06df52884dbe65d0af906fb9f3511f65dfeb73e5fe20a963a2101ec36b92deaed9b2ddeebae4b71bce81ad0f86b5ee87386b40ab0dae9ce0fd216d189bae63280ef9eba0bc13ea523dd283ce33c46ecf276b5d794389cff5799fcb419db511edef0f926dff3a8f679dc75c0fed67cad9a39ab3a35ecaced92ba1ae9f7b74cd331e73760f70249fb3eded9ab3a35ecaced901a8ebe71e5df78ec79cbd06381872b69b27670b79cdd9e238581044e71e7df7198f397b0c3892cfd94ecdd9d12f65e7ec7d50d7cf3dfafe3b1e73f636e0483e67bbbbf5da60d44bd939fb02a8ebe71e8dc58cc79c7d00381872f690f6b3a35ecaced9d7415d3ff7685c703ce6ec8b8123f99ced65cad976cdd9a038a71904d1b94763d4e331671f028ee473f6b08ecf8e7e293b673f0e75fddca3f992f198b3ef71653bcff06d37cfb0007cdf71be85c09b7c6e1f6963caed36cdede2bd1e41109da33477371e73fb1157b679fc3db8f7807cdfa7fb12c0f703e7bb107c3ff4eed9603a06baf418187d9bca3d067e0675fd5ca679e4f1780c7c07381872b65b7376f46d2a3767ff0275fddca37b1ac663cefe12381872b6477376f46d2a3767ff0e75fddc5beacae33167ffe6caf67ae127ee7a6139f87eea7c2bc0f733e75b09be9f3bdf2af0fdc2f95ac1f74be75b0dbe5f395f1e7cbf76be36f0fdc6f90ae0fbadf3b583ef77ced701bedf3b5f27f8fee07c5de0fba3f37583ef4fced703be3f3b5faff3d9f92ebaf7ea4bce67f72d69d41f24bb6fe91e4bda36adaf1c83d84d5eeca6318cddecc56e8e88bd8a21761662d092f1d6fba1bc8a97279f031e8cb53af958edb6edadc1e8dbbe1a78f20c6dcf428cd1f0e481a72d799ef0fc59487ebbe13e6ef534cd42ac5668573b43bb32108bb64deb142f073eecbfdb23183b92672c6420166d9bd63b80917c783ea1f33a1d3ff67cb82433cccb702c85d744148f9eff441cabc14f751e9d31ccb6dcb135c2fb786e6df37c4c7919e605c5a26dd33ac56b84f6b48d3d6361b48c798f91ab8fc8402cdab61f1b8ff75563afd9a8f66b0e7ce7a14f2a54da273502db585ca7c4ed6b29b139ce571988417d1b695e003fd599e57e9060fbb6edd0ef321c7f8572afdfb03f483e8f0b793cae47c3d30e3c1cc73ed3f19ac7f3fe3f826473add3d3aacdd32a07753a40bf4e06fd4a5d87503c6556666556666556666556666556666556666556666556666556666556666596cf8cf75fe0fc26d55b2984917c05e0e118e70f9f01e5b645dbb7f33a3f86799de4e72d0a799cb3a47b0c97796dae833a7fcd0cd7fd39cca7fb738338a7b99257bb51dd67d1189c3b17cb398718370f1c357fd99258ecc261aef936fb0c15fb1cb2564fd795119a32dca73242d38ca729dea7b8c2e3b1793ab776988d63eeafdcb948d48aca49ceede13d06bcfba5d87f502ed40423fb0f3ccf74251e7be41c26cd977779b1eba0ceff6486f70ddd8b4affebcebfe7c9d6e9f6b64d9f5906fe6e6fdb4deeb3c451ef6dbf153e4b75fe0ffad4d7d704ffd48ce3fe0fec9703682b2efd50c679f3e4cfc3c579fcf632783a8187a39f61badec8e33190f43c7eb7a755d4750cd5e902fdba19f48bba16a5758aa7cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccf299f1b7a2c49a857a05218c6374ef43389f41cf7fa1eddb799de7d60cc7e59e87a339a7e55e9beba0ce376b86ebbed0951b8373ef7788db970cf37925f725c56b84f6e05c10d7efb93b3c9e8e082da8dc9258ece23c7ef21a0fcfe3b77bba162234e53a5e718e1535c5e3b5cde3c1b9d1c6e0dc7b4bb2b09db1b877282e2f281e1e4b1de0a332fe3e9a633fe3b9c4bfaf87e2e1fcf5c34edba6806bdf17f29cfd460fb4a93f3837bfeba0cebba1ef7baf2be33d1c78efc82311efd3526a9e9af46379965dbe38efbb0638fb210ec65e0bac09c56ec3d819671487fc7550fe54cd705daa477a90d6c46e8f117a2618b2fb9f6bf33e97833abd11edef0f926d7f9fc7d3e731db7df201c8b347e0fccfd527f5c668b40c34a23a781dc475eef4efaff4ef2bc47eb4c1ab439fad833a5f823e2aeefed1a87300f7798cb61d751ef3cf0ba3b9cfb3daefd37a14fa8ba4efd37a147208efd30abced2f87ed135743107f6ea13a3ff5b6ef5f93d367f03e30aaf30be82f9adc3d8b8dc1b9d7df78cfd4587cbf8abb4f9ae2e1750dbd379ab65be61ea8df9f2033e604b2e07502d5f993b7cfba63b857477cf6af319f25ad56b9327e7ff1f5b33af4c267fa13d1a178ccf7796da1bcee85b6509dfff2ae0193bf6e295e0326dfd691d724d40f7444b495eafc371c6b7f876b3cda4ff8bda3a1f6dcf76929750d48fad9368ff5f38131b684e703d7d70ed7f59ff34b5a97fb7ce02eef73129f0ffcbf90670d701f3a575fbd3646a3e5a011d5c1df06d179049fe51b35d671bebe4fe3b514f6cf4da029d7ef0efcf39f3fae16758db0dcd318af116638e626a7b35fd71f2fa4f36592f70de36f255a212efe56a29549cf3ce8d60feb785d703e63e79962c73d733a3f06b1e39e393d16b19bbdd8cd63185b3557cd2569cef04ce4f0f767f8cc52bb94ba2e25861c7cae26058cb52960ac4b01637d0a181b52c03821058c1353c03829058c9353c09805c6f3796e67d0a750a93e5cfbabd4b506c65ec5a44539ffbf83f97fa994bcf6c1d80cdfe9422d5605a3d702bfe7713cfba1dcfff5420cf8bf0ba6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a185b52c078410a182f4c01e3e352c078510a181f9f02c625ca9808e30a5ec642a58c9687e37ffe3d96ff39c6c0938fbae794e9fed9b2ffdf1af3f349db2a7d6e1cde5bc2fb3fe11edbb3ed38ee1d29f7d976a5fedf2a1363a15246ae7b81f0bea3d1f044dd1fd4c6cb58a89491ebf72ff81bbdd1f07481669d119a3130162a65e4ba57aedc7b39f19efeae08cd18180b9532e27dd509f2849a7597c1d3039a754768c6c058a89491ebbee42cc4180d4f2f68d613a1190363a15246a6dfb6859af596c183bf01eb8dd08c81b15029a3e559c3a4595f193c6b40b3be08cd2431224fd2cfc9ee8b88c5f19bc172db4e0cc83829058c9353c088f74970f45fa5ee93e8e3d5a750a93e5cfbabd47d12189be1f731a116f87b887fa5c53a5e9e92f74960ecf54c5ae0ef55fe9516eb8187e3f7335988311a1e62c8c1e7a6a580717a0a1867a48071660a1867a58071760a18e7a480716e0a18e7a580717e0a1817a48071610a1817a58071710a18f1bb2ac3b562c9ef2febc779ecb8ef2ae33d76dcf792f11e5bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73c97143b0d63fcca38fe1891a725399e3cb61d63f50b687b7f044f86a9ed186ba380b61343da1837a480714d0a1855c7e23d8895305a9e4d4c3c1bcbe0d9043c9b99783695c1b31978b624cf13e6d4e632788821079f5b9302c60d2960541d5547498caa63f5e8a88ccaa88cca783e18d3d0872b632af2b15029a3e5d99a3c4fa8d9963278b68266f4b9b61430f6a78071032f63a15246cbb32d799e50b3ad65f06c03cde8736dbc8c854a192dcff6e47942cdb695c1b31d34db16a1190363a15246cbb323799e50b3ed65f0ec00cdb64768c6c058a894d1f2ec4c9e27d46c47193c3b41b31d119a3130162a65b43cbb92e70935db5906cf2ed06c6784660c8c854a192dcfeee47942cd7695c1b31b34db15a1190363a15246cbb327799e50b3dd65f0ec01cd764768c6c058a894d1f2ec4d9e27d46c4f193c7b41b33d119a49655c9302c60d296064d6b15029a3e5d9c7c4b3b70c9e7dc0730913cfbe32782e019e2724cf13e6d42565f010430e3eb726058c1b52c0a83aaa8e921855c7ead15119955119cb63ec4f01a3ee6b6594cac8f0fdaae46f912e19e7b19bbcd84d55123beeb748e33db6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae792e29f6fee46317ca7dc6cc7ee0e178e60d533bf376bb97ba6dfd2341fdac5697795a5de26995833a97827e9731e89781b8b46d5aa778e5325f2c80992976618ad9c624683fc5d8e0e961e35fced4f6b8befef2711e3baeaf1fefb1e3fafaf11e5bf35cf3bc1a626b9e6b9e57436ccd73cd7329b1b15c1f0c5fb7d3f34fed369ee8ca756e1d59c94f75ae9a507c6d0af418e288adc7909e2baa21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad792e2fcf311f6ac68027f07882123cfb84f12c12c6334718cf34613ceb85f14c12c6b34c184fad309e9dc278b609e3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67a3309ec9c278ea84f1e485f12c11c6334f18cf58fc9ea11c9e19c2785608e3c90ae3d9248ca75e18cf6a613cbb84f1f409e3d92e8c67a9309e5e613c5dc278da85f16c11c6d32a8c67be309e99c2781a85f1e484f13408e359258c678f309eb5c2781608e399258c678a309e26613c1384f1ec15c6b35b18cf3a613c3b84f16c15c6d32d8c67b3309e0e613c2b85f12c14c6335b18cf54613ccdc278260ae3c908e0c906e73e932c0befef075f8df7597bbd3477e6f0fb57387f0d7ce64a57ae8dd8f615e0a3df865f19f159d4e90a684bbf2be71fdb12ea84b1fa619de23502c7954278260ae36916c6335518cf6c613c0b85f1ac14c6d3218c67b3309e6e613c5b85f1ec10c6b34e18cf6e613c7b85f14c10c6d3248c678a309e59c2781608e3592b8c678f309e55c2781a84f1e484f1340ae399298c67be309e56613c5b84f1b40be3e912c6d32b8c67a9309eedc278fa84f1ec12c6b35a184fbd309e4dc278b2c2785608e399218c67bf309e79c2789608e3c90be3a913c6335918cf46613cd385f1cc15c6b35c18cf62613c05613c9dc2787a84f16c13c6b353184fad309e65c2782609e3592f8c679a309e39c2781609e3d9278ca7268287e1ff5f863c74ff1a6d9bd6f70b89cdb01fc2fffb7915539bae76dbaa77db257e8a5707750eb98ed4ce4fe36789cbbfdf10bf9b5f0d1a5dcdd416da1f196fff70c7c6fb2a0360083c7d82081e8efb5199da39220f13fcffb379abd5359e56febecb419dab40bf6b18f48bca6d5abf0678e83c4eac59a8b75e0823f92e67e6c9429b6929750c5c033c1cc724533bc35cbdd66bd3fa08dda90ee6eab50ced8c3a7668fd5ae0d9e8cac49a857a1b853092ef6a669e2cb4999652b97a2df0701c3b4ced0c73f53aaf4d1b2374a73a98abd731b433ead8a1f5eb8067932b136b16ea6d12c248be6b78793ab2d0665a4ae5ea75c0c371ec30b533ccd5ebbd366d8ad09dea60ae5ecfd0cea86387d6af87fda0ccca1cc56c79e87704c49a857a9b853092ef5a569e8e7c16da4c4ba97eec7ae0e1e8e799740ffbb11bbc366d8ed09dea60aedec0d0cea86387d66f8888dd1224abc58da3d0e2c6089e1bc7580b8a572ef3552964569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a1e778126b16ea6d11c248beeb7879c2df056d09462e196fbd1fca3702cff50cfa30b533bc87fc80d7a62d11ba531d3cbe0e30b433ead8a1f503b01f0e94c17c430a9955e7ca982d0ffdff0c62cd42bdad4218c9773d2f4fd88f6d0d462ea5fab103c0c3d1cf33b533ecc70e7a6dda1aa13bd5c1e3eb20433ba38e1d5aa778caaccc71cc96879ecb46ac59a8b74d0823f96e64e52984bf6fdc168c5c4af5630781e740e23cc57e8c41f7b01f3be4b5695b84ee540773f510433ba38e1d5a3f04fba11ce61b52c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73f5e86c79e8ff5f126b16ea6d17c248be03ac3cede1bcc3f660e492f1d6fba17c08780e26ce539c7760d03d9c7738ecb5697b84ee54078fafc30ced8c3a7668fd30ec87f1ce7c430a993537c68659734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426e589e1dae4cac59a8b7430823f90ef2f284cf3dd8118c5c4addb77318780e31e8c3d4cef0be9d235e9b7644e84e75f0f83ac2d0cea86387d68fc07e5066658e62b63c3b5d9958b3506fa71046f21de2e509fbb19dc1c8a5543f76047838fa79a67686fdd880d7a69d11ba531dccd5018676461d3bb43e00fb419995398ad9f2ec726562cd42bd5d4218c977989727ecc77605239752fdd800f070f4f34ced0cfbb1a35e9b7645e84e7530578f32b433ead8a1f5a3b01f945999a3982dcf6e5726d62cd4db2d84917c479879b2d0665a4af563478187a39f676a67d88fdde4b5697784ee540773f5268676461d3bb47e13f0ec716562cd42bd3d4218c937c0cc938536d3522a576f021e8e6387a99d61ae1ef3dab4274277aa83b97a8ca19d51c70ead1f039ebdae4cac59a8b7570823f98e32f364a1cdb494cad563c0c371ec30b533ccd5e35e9bf646e84e7530578f33b433ead8a1f5e3c0b3cf9589350bf5f60961241ff663fb9878721e4f2e428bf118bbc98bdd5425b19bbdd8cd55125bf35cf3bc1a626b9e6b9e0755105bf35cf3bc1a62576baea9e6d5a979e63c6a9e398f9a675473919aff23b9d89dd8afd4402c86f1b9b6d18c3922cf22613cfb85f1cc11c6334d18cf24613ccb84f1d40ae3e911c6d3298ca7208c67b1309ee5c278e60ae3992e8c67b2309e3a613c79613c4b84f1cc13c6334318cf0a613c59613cf5c278560be3e913c6b354184faf309e2e613cedc2785a85f1cc17c63353184fa3309e9c309e06613cab84f1ac15c6b34018cf2c613c5384f13409e399208c679d309e6e613c1dc278560ae359288c67b6309ea9c2789a85f14c14c69311c0930dcefd6d07fe9ea0167c747fff3ef03dc995f783af2622066de738f868fc94b661cf5717cd3c97a1063e737304d79322e2519c9b233e3b16ba63ac7e58a7788dc071b3109e89c2789a85f14c15c6335b18cf42613c2b85f17408e3e916c6b34e18cf04613c4dc278a608e399258c6781309eb5c2785609e36910c69313c6d3288c67a6309ef9c2785a85f1b40be3e912c6d32b8c67a9309e3e613cab85f1d40be3c90ae359218c6786309e79c2789608e3c90be3a913c6335918cf74613c7385f12c17c6b358184f41184fa7309e1e613cb5c2789609e399248c679a309e39c278f60be359248ca72682673f134fdcf314f60b886dd7f3a08b5db2f0fe58fc2e68bfc748ebc78011798927cfc413f70c8abc80d8b6fd347640732859781f7fd7c19553798f91d6a3720aef6b5ccdc413f7dc8ed502625b2d68ae82ee01c8c2fb781f33574eadf618693d2aa79a7979c2ff1fb02a18b994bad7088f398e7dc8d4ce3c1e7f093e4323f219c9ab3cadf019aa63f11c89b8fe80e229b332c7315b1e9a6b22563c9f8dc5efa846c318757e65e009fbc7d660e452aa7f3c063c1ce70fa67686fdd809af4dad11ba531dccd5130ced8c3a7668fd4444ec9620592d4e8e428b93113c27c7580b8a572ef3fe14324bd0d9f2ac746562cd42bd954218c997e7e509fbc795c1c8a554ff78127838ce1f4ced0cfb84535e9b5646e84e75f0f83ac5d0cea86387d64fc17e2887f9440a9955e7ca982d0fcd89106b16ea15843092ef182b4f219f8536d352aa1f3b053c1cfd3c93ee613f36e8b5a910a13bd5c1e36b90a19d51c70ead0fc27e5066655666655666655666655666655666655666655666655666655666655666d9cc96877e3b4cac59a8d72e84917c2759798af30eedc1c8a5d4bcc320f070cccb30e91ece3b9cf6dad41ea13bd5c15c3dcdd0cea86387d64fc37e5066655666655666655666655666655666655666655666655666655666655666d9cc96879ed94eac59a8d72184917ca77879c2df6d7504239752f30ea78187635e86a99de1bcc32d5e9b3a2274a73a98abb730b433ead8a1f55b603f28b33247315b1e7a761cb166a15ea71046f20db2f214e74f3b83914ba97eec16e0e1e8e799740ffbb1335e9b3a2374a73a98ab6718da1975ecd0fa19d80fe5309f4821b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abced5a3b3e5a1ffb148ac59a8d72584917ca75979dac37987ae60e4526adee10cf070cccb30e91ece3b9cf5dad415a13bd5c1e3eb2c433ba38e1d5a3f0bfb61bc339f4821b3e6c6d8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbd3edcac49a857add4218c9770b2f4ff8dc83ee60e452eabe9db3c07386411fa67686f7ed0c796dea8ed09deae0f135c4d0cea86387d687603f28b33247315b9e1e5726d62cd4eb11c248be33cc3c5968332da5fab121e0e1e8e799da19f663b77a6dea89d09dea60aedecad0cea86387d66f059e5e5726d62cd4eb15c2483e3cc7f532f1e43c9e5c8416e72bb65def73e546f79a85f7fb8091ab6fe9f518691d731c7989a78f89a7c9e3698ad0e27cc5b6ed5febca53dc6b16de5f0b8c5c39d5e731d27a544e3501cf5a269e668fa739428bf315db6ab1ce95a7bad72cbcbf0e18b9726aadc748eb5139d50c3ceb9878e2faa47563103beef81a8bd871b93216b15573d55c3557cd3935cf9c47cd33e751f38c6a2e4a7386eba870ec946204c0804b3f94f1bb02c7b527533bf351dfc7d6796dc2ef6338e670bebe6f28b332c731338d5b7464bdd8a44fe0f1d032c4acc5588e41f6796d923606592ef3891432abce9531dbd8b7251fbb23ebc5267d028f8796db98b5606a67d81fdc1e446b4cf1725007f3f476867666202e6d9bd66f87fd500ef3891432abce9531dbd877241ebbf86c768c4dfa041e0f2d77306bc1d3ce627f706710ad31c5cb411dccd33b19da9981b8b46d5abf13f683322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb332cb66b6b19f9c78ece2f83dc6267d028f879627336bc1d3cee2f8fd5d41b4c6142f0775709fdfc5d0ce0cc4a56dd3fa5db01f945999955999955999955999955999955999955999955999955999955999955936b38dfd94e46387bfc7c1d8a44fe0f1d0f214662d98da198edfdf1d446b4cf1725007f7f9dd0cedcc405cda36addf0dfb419995398ad9c67e6ae2b18bf379189bf4093c1e5a9ecaac054f3b8bfdc13d41b4c6142f0775709fdfc3d0ce0cc4a56dd3fa3db01fca613e914266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569dab47671bfbdec463b787e3f7189bf4093c1e5aee65d682a79dc5f1fbfb82688d295e0eea609edec7d0ce0cc4a56dd33ac5ab06e6132964d6dc181b66cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e63866cd0d658e63d6dc50e6386609b961633f2df9d8e1efd93136e913783cb43c8d590ba67686f7bfdc1f446b4cf1725007f3f47e867666202e6d9bd6ef87fda0ccca1cc56c633fc0103bebc5267d028f87960798b5606a67d81f3c18446b4cf1725007f7f9830cedcc405cda36ad3f08b151ef846287f740528c1af76a7d4f77e55af03dc395ebc0f74c57ae07dfb35cb9017ccf76e509e07b0eb4877ccf75e515e07b9e2baf03dff35d792df85ee0ca7de07ba12bf782ef45ae3c04be17bbf2ade07b892bdf06be97baf2ede07b992bdf01be97bbf29de07b852b3f197caf74e5bbc0f72a577e0af85eedca7783ef35aefc54f0bdd695ef01dfeb5cf95ef0bdde95ef03df1b5c7909f81e8af0bdd1959f06be37b9f2fde07bb32bef07df5b5c7912f8deeaca93c1f76f50a6d7b7b97223f81e76e51cf8deeeca53c0f70e576e02df3b5d792af8dee5cacde07bb72b4f03df7b5c793af8deebca33c0f73e579e09bef7bbf22cf07dc0956783ef83ae3c077c1f72e5b9e0fbb02bcf03df475c793ef83eeaca0bc0f731575e08be8fbbf222f07dc2951783ef93ae8cfbf7df5df901f051bff220f8a85f793af8a85f7906f8a85f7926f8a85f7916f8a85f7936f8a85f790ef828ef9e0b3ecabbe7818ff2eef9e0a3bc7b01f828ef5e083ecabb17818ff2eec5e0a3bc7b09f828ef5e0a3ecabb97818ff2eee5e0a3bc7b05f828ef5e093ecabb57818ff2eed5e0a3bc7b0df828ef5e0b3ecabbd7818ff2eef5e0a3bc7b03f828ef1e021fe5dd1bc14779f726f0b5b8f29bc177812bbf057c17baf25bc1f73857c67ee622577e1bf81eefca0f838ffac2b783ef62577e07f896baf23bc1b7cc95df05bee5aefc6ef0ad70e5f7806fa52bbf177cab5cf97de06b75e5f7836fb52b7f007c7957fe20f8da5cf943e02bb8f287c1d7eeca1f015f872b7f147c9daefc31f075b9f2c7c1d7edca9f005f8f2b7f127c741ea77ec61ecff6b8241d4823eba336b746b4857c13a12dfd41b2d774148bb64debedc048fba030f68c85d132b6798c96a7934133cc2b5a4a7dffe8049e0e061ea67686df3fbabc36b57b6dca419d8ba19d5d0cedcc405cda36ad77416c8e7d8e5ad4bbed2ef5b4a8833affe14e72f67c5a4a47da86cddf42445b7a99db42dba67ea9770c62777bb1f35e6cec8f6929757c7503730f03b3dd6e5ff2db0d8faf356e5b945314270f6d5a0b1a24d5268c9d714671c85f07e59a99c375a91ee941e72f62b7b94cfb12d9fdcf757a9fcb419dde88f6f707c9b6bfcfe3e9f398ed3ef9fb8c610e86e321cc815e8f83d6f3a05d5f8c76bda01dd5c1f35f1b93763d1e0fadb7010f5de374818fae15881fafb35ac780dbeff7ba22b8c9d70d8c6d118cf9e419c36b9d368f91d6f3c048be1ee0e966d2ccdfd74b3d7df0bcdce0d5a1cfd6419dd9ae2f690a467effa0baf6b85b92196e177d07ff47906c9fdec0a0178e0f04a04fe06918805ed4ce7a069ec9c1f018c1d9a1c133076f1ab874e0e0910ca0d57998f89a8968460df8b05c1be10b8291432138244b432138245be3c982433054df7e95b2cda2e1868193c7879e786ae0d4e133779e1e1a38b267f026a4aef7e89134ae05488a3e5a2606c38336fd41b2c9d3e0c52a953c13e17502030f533bc393de24af4d0d5e9b7250a71ede9bc4d0ce0cc4a56dd33a0e00930fb393dec709831aaf2d98c593e0d5dfb7893688023e0eb69f7170f6bd3a276c83832771a9c7b057717627d85142db53db51403bea670f3b3baa672f8c6c476e47e9eca89c1d85b3a36e7694cd8eaad951343b6a6647c9eca8584b501cf5ba1078be048c7654cb8e62d9512bfb4dd29e15ec28941d75b2a34cf66ac27e4bb167607bc569cf86f62c68af76ecb729fbcdda9e61ecd9db9e99ecd9c45e1dd9ab227b156bafeaeccccc7a631b9cd61b8d6d32b6d9d816635b8d6d33b6ddd80e633b8ded32b6dbd81e637b8ded337689b12704c511e54b8d5d66ec72634f347685b12b8d5d65ec6a63d718bbd6d875c6ae377683b11b8d1d3076d0d82163878d1d313660eca8b19b8c1d3376dcd8938cdd1c14eff03869ec94b14163a78ddd62ec8cb1b3417196c8ce0ad959203beb636779ecac8e9dc5b1b3367696c6cecad859183beb726f509c55b1b3237636c48e84db916f3bd26d47b69f191447aeed48f57382e248b41d79b623cd7664d98e24db91633b526c4786ed48b01df9b523bd7664d78ee4da915b3b526b4766ed48ac1d79b523ad7664f5a1a038726a474aedc8a81d09b5239f76a4d38e6c3e1c14472eed48a51d99b4239176e4d18e34da91453b9268470eed48a11d19b4238176e4cf8ef4d9913d3b926747eeec489d1d99b323719f32f688b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f06c59cfcb2b1af18fbaab1af19fbbab16f18fba6b16f19fbb6b1ef18fbaeb1ef19fbbeb11f18fba1b1478dfdc8d88f8dfdc4d84f8dfdccd8cf8dfdc2d82f8dfdcad8af8dfdc6d86f8dfdced8ef8dfdc1d81f8dfdc9d89f83e1517bec28feee566804f9e0d0d0c0c9d3432d43832d276f3d3174fcf4893b5b6e3f3e74ac65f0b68133474f0cde8e1f7e9beb9a68787ce3993307ef6c397eeac8c01d2d83b70eb50c1e6d393478eba92367f1435f741f5a706ec483478ec407fb61cd6320fd498541ffe83e47130f3b4bb7ed2f9508f29f957c687a6d650dbad29d59e85be965c5abb896b32706875af22da7ccdf8327cc67068eb4b6e07b678dc867875ace0e1d3c33d472f4cce0c996b656dceec1491534e26f332af8d0ac99a36f79f0ffaa88c27fb1020400", + "packedBytecode": "0x000000028df71de500000047751f8b08000000000000ffed9d777414c7dae65b2030782c01ced9c2e13a60632144163038e78c8d31c62004061b104118e76c72744ee49c93c91803c6d8d737e7ec74af6fd87376bf3dbb7fecf79dddf56ed74cbd9f1e8aea4123770d8f34d5e794a6fa5575bfbf7afaedea54dd5510a4a77f85a940e79b86e9c2e0c849fe9fd4bfa5df6fea10e3ba4a5d72163410ce260d84b36903e12c6c209ccd1a0867f306c2795c03e16cd140385bc6c859007cae788f6f60bc8906c67b42d030e2b6a88170163710ce560d84b37503e16cd340384f6c209c273510ce931b08e7290d84f3d406c2795a03e13cbd81709ed14038cf6c209c673510ceb31b08e7390d84f3dc06c2795e03e12c69209c6d1b08e7f90d84f3821839db01a7dccbbf48fffe40ff5eac7f2fd1bf97eadfcbf46f3b5dc7423d7f7998ae0853fb305d69fc4f09a36ee89785a9a3f1bff230750a53e73075d1ff2bd1ffeb1aa66e61ea1ea61e61aa0853cf30f50a536fad479f305d15a6abc3744d98ae0dd37561ba3e4c3784e9c630dd14a69bc3744b986e0dd36d61ba3d4c7784e9ce30dd15a6bbc3744f98fa86e9de30dd67b0f40bd3fd61ea1fa607c234204c0f866960981e0ad3a0300d0e5365988684a92a4c43c3342c4c0f876978984684e991303d1aa691611a15a6d161aa0ed398308d0dd3b8308d0f534d982684e9b1304d34347b3c4c4f84e9c9303d65703e1da667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c234294c93c334254c53c3342d4cd3c334234c33c3342b4cb3c334274c73c3f46a985e0bd3eb617a234c6f86e9ad30bd1da677c2f46e98ded32cb223bc1fa679619a1fa605615a18a645615a1ca625615a1aa665615a1ea615615a19a655615a1da635615a1ba675615a1fa60d61da18a64d61da1ca62d61fa204c5bc3b42d4cdbc3b4234c3bc3b42b4cbbc3b4274c1f86696f983e0ad3be30ed0fd381307d1ca68361fa244c87c2f469983e0bd30fc3f479987e6468fee330fd244c3f0dd3cfb4ede7faf717baacecf3bfd4bfbfd2bfbfd6bfbfd1bfbf35caffce98ffbd31ff07fdfb47fdfb27fdfb67fdfb17fdfb85fefd52ff7ea57fbfd6bfdfe8dfbfeadfbfe9df6ff5efdff5ef3ff4ef3ff5af7afef75edb74be45503b258398daa4f2a183d5fd7f11db7cbea89e5d35d5ff93df126d2fd4f3f25ba0edcdf47c33c3de5ccf3737d6d342cfb730ecc57abed8b0b7d6f3ad0dfb897afe44c37eb29e3fd9b0b7d5f36dc19ed0ff4b572cfda36c4db5a9006c129f4dc0d64cdb9a82adb9ac0e6cc7695b33b0c9f66d0eb696da761cd88ed7b616604b685b4bd1324c27685b32882b564a07abf516c5bd5efdcca4387ede4ab5de568e785bc7cf3b44adb78d035e151f27ea751541dc9ca46dc5603b59db5a81ed146d6b0db653b5ad0dd84ed3b613c176bab69d04b633b4ed64b09da96da780ed2c6d3b156c676bdb69603b47db4e07dbb9da7606d8ced3b633c156a26d67814d37b9c1d9603b5fdbce01db05da762ed82ed4b6f3c026e778256093f3bdb6609373bff3c126e78117689b6a3b5a16803f6d97762be54fda6cb0fd40da6bb05d2c6d35d82e91761a6c97826fb15d066d8dd8da699bb45bea7fdd753e19c4b59f94a5f6931e71af375cb35a6fcff8d79b7a7ed72ba8d53a097e7a8056bd753ec6be2d1dd0b79cdb881fb11742fe26282be5440f39f608bb3a1654e87cef0ccb7537962b86321596fa278378ebdfd3e0e969303783bc9b98ed58ea63b6ce53d631db0fca9ab127e7418d31666f050e07315bee63b6ce53d6313b0cca9ab127e7c28d31661f000e0731dbd54dcc9695fa984ddf1b0b027becc9f550638cd911c0117fcc76f2315bf729eb987d11ca9ab127d7c48d3166270247fc31dba5ab3f37a8f39475ccce81b266ecc9fd99c618b3af008783981de2dbd93a4f59c7ec7c286bc69edc2b6c8c31fb1a70c41fb3dd1cc56c471fb341fa396710d8634fee5b37c6985d041cf1c7ec107f7fb6ee53d631bb0bca9ab127cf501a63cc6ed079f59ce1e7fa39c3d960fb85b69d03bcf1c7765599a3d8eee0633bddff2308ec312acff31a636c7fa4f32a8e7f05fd11c4f66be9ab00b6df68dbf960fbadb65d00f572b00f74f1fb40ddeb94ed3ef067286bc6b23c5b6e8cfbc02f80c341cc76f5315bf73a651bb3ff05ca9ab127fd1c1a63cc7e091c0e62b69b8fd9bad729db98fd77286bc6de253adf1863f6bfeabc3a5ff8a33e5fb80c6c7fd2b67660fbb3b65d0eb6bf68db1560fb42dbda83ed4b6dbb126c5f695b29d8bed6b60e60fb46dbcac0f6576deb08b6bf695b39d8bed5b64e60fbbbb67506db3fb4ad0bd8fea96d5dc1f62f6deba66daa9f9ef4bd3aa46d2d803f19c4bb6da5dfa5ac5be63be4c0772bc377ab1cfa6e63f86e63f15de6c077027cc85460cc27215fe696a7b41878d05779fcbe3aaaba770cea5ef772e0e9e4a0ee09f051179e4ec0d3397e9ed4f1b34bfceb4d6de38e86a609f0d511ead5d541bd0ac097ac5be6c55f31d8b06ded6a61ec163f635901f89275cb7c3760141bb6f5f22e95ec3fea787871412daf837d29754e24fee4db55c2510e7629d3a16d2d5b3bcd5604ffc7e35e67c3e6282e537121be64dd322ffe8aa03e9d73cf585657c64e06a3ab36a2007cc9babdefdaed20793c8ebbb8d6b1b569e2bb470e7c77337c971bbeb1ed9429d3b1ad1b30c77ecda98f6d15f1afb714af4fe4da50fce0f9035ec3c55527f42dd786e247ec8590bfada0b6ac94133da41d167615cbb22d91dd5caeabb15c3194e961a97f3288b7fe15064f85c1acb6c9d5702c74b03fa462a087c121f3e5a05d4584763d403b29730968e7aa3deb6ef0c87c67e09176ac0bf0b8ba268ae2c9c5f5d8d17ce3392c5e3fcbfff13cc0d5f6ea6030cabc6d7b750346dbb98a83eb998ce72a9d80516cdd81a7a323cda2b66b4712df0e6225d51e890f393797fdb733d8a54c37fd429d6a2b1f81b6d2458c603cca54d76bdef8b75359ea1abc53163cb8ed1c5c577570148fa578ffe6bb20de5833dba54e865651f7785cb5e51d0d1e99177f9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec99f999f17912f6db92729d4918cdfe6faeeef3a7be61a8d725eb57cf75feb7d3fe6065a5d83f46fa415c66d4b910ca1435a92dfbffa03f98f99c0afb487676ab5d6a5b627fcc24cc8b3fec6b85db92a1bf53496cbed3dfa274f1bc4df5b156dfd134fb7e76b668eaa2ff336a5a60688afdf12f3778549c5634ad6573f1ec2fdb6791a895e4e37cb6571cd8633dfeed5276d833eb26c1e1ed071e675cf5df91b65a9e97f7307c174299b39ad46e1be95b25e3cc763496c37e3fb26e59e632b05718eb6ead97158e66c6fabbc0b252e65c6853f737a9d5cc415b59966ddf757c6e1eff7138fd1cbf63163c1d80c7453be3e87ce3b0efadc6fd1cdfec9f663b8f9132d8b7cf41bfca8cfd9dc49f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66c5633e6bc5f76bcb491873d4f721f53c43be5526eb4f7d2fb849ad5fd7cfe1e499533ba3cef8eee87f6f525b768bce170547f67788da96aebe4f11b52dc51f7e7b069f05b978ae5b00be64dd65162d245f129bef32676343c873fc8e86aee5164d5dedaff88c1535c5fdb593c183cf46a3beed5366d85cf61d8a8a0bf187fb5219d8248fef47bbd8ce782c31fbf5883f7c7efd23ad6debc0d5b62f2b75d96ee0775392c191f18ddf53f939b47dbfd479ecc3817d47beb6fc5fa64ccfa9453f556707dfd72c2d8075c9f6b57ddbb30fb0c6e4bb03aeab40a73e86068590ffaa496d59292765456b6157fb887c0306d9cde53a19cb1543995e96fa278378eb6f7e6bb5b7c1acb6c96f20cebe86e3bfab36a95784469781465206cf835cf5c933db48b37f23f6db6b6e94c1731629f32f68a3a2fa8fdafa1cba3a8e45f539b49d1b770046b38e663fcf7cefa7f51fd05ec4dd4feb3f2086b09f5660acbf1dac5fb89a07d1c71629f37f8df59be7e4b20cf603fbcffe4ff03d97329dcfe69cfc585d5fd9cec971b9a8ba2b66fc0e5a3246668c0964c1f3042973bcd65ab65945047737cbb24511cb8a56e6b7c28a8223f573f39db5f43edfdba88bc4357e835cca9c04757173de923e0774f54db924d449e5cb2c759532a7c3be76a6ce27603be17e7ba9e5ff32653a07c431dcaf8abfcea9ed7b357026c10ffabe065863f2dd017dcb39a0f8117b21e42f695a5b56ca891ea2b5b0ab7d44cea390dd5cae87b15c3194e963a97f3288b7fe57193c5719cc6a9b9c03717629f44377d556f789d0a81d682465f09ea2ed3ba0b6638cabbefd51c798326034db4d3c4eba6433df1332efabd9ce11a48c2c8be7085da09d4d58ca9af70be5781967bf617c57a20bf8c577255c7dbbb93be89684793c2f3896be5d7cc756f98b1a33a17b0e7c478d99900bdf6d0cdf6d72e8db6bee3567d2dcc11804a9f7cff09ba56aca745e8ae312c8724d80d1c5580e89e0f06f8f1f8d11c77790e59a02a38be343b6df3eef028cb25c2130ba78b714c7dfa80b237e63188ff3c2e8e05bb11deafbad58bca7d71c1899ded9c46753c701a38b7ba8f57d570fcfe75bc0afab71893a66c188e7f3b25c4b6074716f1c9f0dd68511af8b64b9e381d1c533ac6cc777c26fcfe3bd65978c998eed8efba294657befa5c22d4fc6730df4ed605cc39416789ff1685af474cb93f1dc077d3bb8ef97d202c7193c9a16f86cd0c5b88789e0f0e77047e3c1e797b2dc89c09874c4d83b0bc62430fee7bd6260ece388319905631f6014fbc9c0e8e0fe6b8ab14f168c789f52963b0518af76c47855168c5703a32c772a30bab8979a00bf7561bc061865b9d380f15a478cd764c1782d30ca72a703e3758e18afcd82f13a6094e5ce00c6eb1d315e9705e3f5c028cb9d098c373862bc3e0bc61b8051963b0b186f74c47843168c3702a32c773630dee488f1c62c186f024659ee1c60bcd911e34d5930de0c8cb2dcb9c0788b23c69bb360bc051865b9f380f156478cb764c1782b30ca7225c0789b23c65bb360bc0d1865b9b6c078bb23c6dbb260bc1d1865b9f381f10e478cb767c1780730ca721700e39d8e18efc882f14e6094e52e04c6bb1c31de9905e35dc028cb5d048c773b62bc2b0bc6bb815196fb0130dee388f1ee2c18ef01c6bb2d8c7d1d31de9305635f6094e52e07c67be3674c5d4bf7cd82f15ee0b92f7e9e9466f766c1739f5b9ed477f5eeb5f8ba3f7e5fa96dd12fa87bddef079efef1f3a4b6c5fd59f00843312c879a3d103f634ab3fe59303e003c03e2e74969f640163c0340b3072c9a3d183f634ab30159303e083c03e3e74969f660163c0341b3072d9a3d143f634ab38159303e043c83e2e74969f650163c83825acd1eb26836387ec6946683b2601c0c3c95f1f3a4341b9c054f256836d8a2d990f819539a5566c1380478aae2e7496936240b9e2ad06c8845b3a1f133a634abca827128f00c8b9f27a5d9d02c78868166432d9a3d1c3f634ab36159303e0c3cc3e3e74969f670163cc341b3872d9a8d889f31a5d9f02c184700cf23f1f3a4341b9105cf23a0d9088b668f3a627c240bc6472d3c717f27fb118baf518eea3e32a87bdd85a11896c37e12a31d318eca82713430ca72d84fa2da11e3e82c18ab8151964b3866ccd44fa21a7c8f89df77aa5daa0eeaaecf18b73c19fb49a0efb18eb41813d45d8bb16e7932f69340dfe31c693136a8bb16e38067bc032d12e0a32e3cc2500ccb613f891a478ce3b360ac0146590efb494c70c4589305e3046094e5b09fc4638e182764c1f81830ca72d84f62a223c6c7b2609c088cb21cf69378dc11e3c42c181f0746590efb493ce188f1f12c189f0046590efb493ce988f1892c189f0446590efb493ce588f1c92c189f0246590efb493ced88f1a92c189f0646590efb493ce388f1e92c189f0146590efb493ceb88f1992c189f0546590efb493ce788f1d92c189f0346590efb493cef88f1b92c189f0746590efb49bce088f1f92c185f004659ee51c78c99ae5f5e68e4bea3ae551abbefa8eb92c6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbfe8c077027cc85460cc27212f0cc5b0dca39eb15133224f497c3ca55877f4f51241dd5fb2f01438aa3bfa7a99a0eec2d0d0185f6c008c8f360046af63ba0f627d1815cf2bf0ff648c3c2f67c1f30af04c72c4f34a163c93806772fc3ca9989a94058f3014c3728f3600c6171b00a3d7d1ebc8c4e875cc1f1d3da367f48c9ef15830368436dc333688782cab2fa3e299123f4f4ab3c959f04c01cd64b9fb1a00e34b0d80f145b78c65f565543c53e3e7496936250b9ea9a0992c779f5bc6b2fa322a9e69f1f3a4349b9a05cf34d06caa4533078c65f565543cd3e3e74969362d0b9ee9a0d9348b660e18cbeacba87866c4cf93d26c7a163c3340b3e916cd1c3096d59751f1cc8c9f27a5d98c2c78668266332c9a39602cab2fa3e299153f4f4ab39959f0cc02cd665a3473c058565f46c5333b7e9e9466b3b2e0990d9acdb268e680b1acbe8c8a674efc3c29cd6667c13307349b6dd18c95f1d106c0f862036074ac63597d1915cf5c473c73b2e0990b3caf3ae2999b05cfabc0f35afc3ca9987a350b1e612886e51e6d008c2f360046afa3d79189d1eb983f3a7a46cfe819b3637ca90130fa6ded1959191d5c5f657c17e9d546ee3bea5da4c6ee3bea5da4c6eedbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ecef3c1b78f731fe7f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe73ece997cbf1ebfefb26cbf31f33af0b8f8e68da37a96aaf5bea1d7f55d8cfa29adde34b47ad5d0aa18cabc01fabde940bf02f02beb9679f1972df3c504cc8e7c97a9f6a525d45f7cbc68e8a1fcbfe5a8ee516dfd5b8ddc77545bdfd87d47b5f58dddb78f731fe7f9e0dbc7b98ff37cf0ede3dcc7398b6fcc370b6acfdbe5fba76a1d6feb7ca19e97f22f815dca3c755cfab775e0f72117befd3ee48f15f9e0dbc7b98ff37cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ece7d9ce7836f1fe77c715e0cff1f9b039ec0e00932f04c21e3a922e3e947c67333194f6f329eb9643c8f93f17425e31949c6f31019cf5d643c2f90f15c47c6f31c194f07329ef1643c53c9788691f1f427e3b9958ca70f19cf93643c5790f17426e3194dc633988ce71e329e52329e57c8786e20e3c9c5fb4bd9f0b427e3a920e39940c6338d8c673819cfa5643c03c8782e21e3b99d8ce76a329e62329e56643ce5643c4f93f18c21e31942c6732f19cf4d643cbdc878e690f14c24e3e946c6339d8ce711329e49643c03c978ee24e3b9968ce732329e67c978cac8789a92f18c23e3194ac6733f194f3b329e5bc87892643c4f90f17421e39941c6338a8c671019cfdd643c2f93f15c4fc6f33c194f0f329e1a329e87c9781e20e3b9988ce736329eabc8784e20e32922e3e944c6f31419cf4c329e6a329ec9643c95643c7dc9786e24e3e949c6339b8ce731329eee643c23c8781e24e3b9838ce71a329e2bc9789e21e3694dc6d3868ca72319cf2c329e02029e4470e4182609f8ffeb606b622cab3efb5ad3b6f6ffef687b1358e65d9d6f6a59f73b60936fc9be6b5916757a07ea92d4f9d2ef37a574425f4998177f45c0f12e09cf2c329e8e643c6dc8785a93f13c43c6732519cf35643c7790f13c48c633828ca73b19cf63643cb3c9787a92f1dc48c6d3978ca7928c6732194f3519cf4c329ea7c8783a91f11491f19c40c6731519cf6d643c1793f13c40c6f330194f0d194f0f329ee7c978ae27e379998ce76e329e41643ca3c8786690f17421e379828c2749c6730b194f3b329efbc9788692f18c23e3694ac65346c6f32c19cf65643cd792f1dc49c633908c671219cf23643cd3c978ba91f14c24e39943c6d38b8ce726329e7bc9788690f18c21e3799a8ca79c8ca715194f3119cfd5643cb793f15c42c633808c47bee7c9c2339c8c671a19cf04329e0a329ef6643caf93f1dc40c6f30a194f2919cf3d643c83c9784693f17426e3b9828ce749329e3e643cb792f1f427e31946c633958c673c194f07329ee7c878ae23e379818ce72e329e87c8784692f17425e3799c8c672e194f6f329e9bc978fa91f15491f14c21e3196be179dd118fbcef2eeb96f9d7497c3bd80ea56abdef39aad3fb7a5dcdf47a855ffc154299c9c7a77fd5fbd8b8ac7099df27c07b71ef8346ef3baa8b6c8f0263fba0efb71df996777e64dd32ff7623f7ddcaf0dd2a4f7cb7317cb7c913df3ece7d9ce7836f1fe73ecef3c1b78f731fe74cbe1d5c1b94e177d2642a30e69390c7eb0517df977354cfc3ae13bf8b513fa5d53c432bf3daaa18cabc07facd73a09fedda53e6c55fb6cc171330635c9404f1c6c5fcf8eb54a6daad96a0eb7c435facd702479a461d43163472df51c790c6ee3bea18d2d87dfb38f7719e0fbe7d9cfb38cf07df3ece7d9c33f95ea8f3315e3796a20ff57c51ae071682dfc53a5f10a35fb5ae457a5d857addc2b118ec52a64922fddb3af0fbbc0bdf7e9ff7c7b67cf0ede3dcc7793ef8f671eee33c1f7cfb38f7719e0fbe7d9cfb38cf07df3ecef9e2dccc4b7ff14b80cd557ffea858ccc5bb04c7d277542c3676df51b1d8d87dfb38f771cee47b8903df09f02153a63e7e4b806791031e47f54c3ddb586ad4e975a34ec550068ff14b1dd4b300fccaba657e29f0c83416785cc4415db639f24c21e3a922e3e947c67333194f6f329eb9643c8f93f17425e31949c6f31019cf5d643c2f90f15c47c6f31c194f07329ef1643c53c9788691f1f427e39947c6732b194f1f329e27c978ae20e3e94cc6339a8c673019cf3d643ca5643caf90f1dc40c6d39e8ca7828c670219cf34329ee1643c9792f10c20e3b99d8ce76a329e62329e56643ce5643c4f93f18c21e31942c6732f19cf4d643cbdc878e690f14c24e3e946c6339d8ce711329e49643c03c978ee24e3b9968ce732329e67c978cac8789a92f18c23e3194ac6733f194f3b329e5bc87892643c4f90f17421e39941c6338a8c671019cfdd643c2f93f15c4fc6f33c194f0f329e1a329e87c9781e20e3b9988ce736329eabc8784e20e32922e3e944c6f31419cf4c329e6a329ec9643c95643c7dc9786e24e3e949c6339b8ce731329eee643c23c8781e24e35940c6730719cf35643c5792f13c43c6d39a8ca70d194f47329e59643c05043c89e0c877ff13f0ff79609377d45f07db329d5f04b626161f4d757e29d80a755ed6715c989e6b7be4ba512757efe5a3af24cc8bbf22e05846c2338b8ca723194f1b329ed6643ccf90f15c49c6730d19cf1d643c0bc8781e24e31941c6d39d8ce731329ed9643c3dc9786e24e3e94bc65349c633998ca79a8c672619cf53643c9dc8788ac8784e20e3b98a8ce736329e8bc9781e20e379988ca7868ca70719cff3643cd793f1bc4cc6733719cf20329e51643c33c878ba90f13c41c69324e3b9858ca71d19cffd643c43c978c691f13425e32923e379968ce732329e6bc978ee24e31948c633898ce711329ee9643cddc8782692f1cc21e3e945c6731319cfbd643c43c878c690f13c4dc6534ec6d38a8ca7988ce76a329edbc9780690f15c4ac6339c8c671a19cf04329e0a329ef6643c3790f1bc42c6534ac6730f19cf60329ed1643c9dc978ae20e379928ca70f19cfad643cf3c878fa93f10c23e3994ac6339e8ca70319cf73643cd791f1bc40c6731719cf43643c23c978ba92f13c4ec633978ca73719cfcd643cfdc878aac878a690f18ccd118f7ab75dde9d0c800ba724e49702cf3c073c8eea598adf35f82ec6f52aad961b5a2d30b42a86324b40bfe50ef42b00bfb26e995f0e3c727e24acf84d85174818c536cf314f02ea2c53a67d6039f0b8d8271dd53315ab2b8c3abd60d15dca60acae70504fdbbe23f32b80e7659d17d604947b9984516c4b1df324a0ce32658ad515c0e362df7154cf54acae34eaf4b245772983b1bad2413d6dfb8eccaf049e57745e581350ee151246b12d77cb539e803acb94295657028f8b7dc7513d53b1bacaa8d32b16dda50cc6ea2a07f5b4ed3b32bf0ab68367f6cc3666c523fd6d853501e52691308a6d85539ef2d204d459a64cedd82ae071d1ce3bd23dd58ead36ea34c9a2bb94c1585deda09eb67d47e6575b7c9704f16ab1a60e5aacb1f0acc9b116e22f5be6250d90d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398a994167c523e3df096b02ca4d266114db4ab73ca9f7822607874f05c67c12f26b806795037d1cd533d5877cad51a7c916dda50cee5f6b1dd4d3b6efc8fc5ad80ed930af6e80cc5ee7fa312b9e293a2fac0928378584516cabdcf2a4dab129c1e153a6766c2df0b868e71dd533d58ead33ea34c5a2bb94c1fd6b9d837adaf61d995f07dbc1337b661bb3e299aaf3c29a8072534918c5b6c6294f59eafdc6a9c1e153a6766c1df0b868e71de99e6ac7d61b759a6ad15dca60acae77504fdbbe23f3eb613b64c3bcba01327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7fcd159f14cd379614d40b969248c625beb94a763eab9c3b4e0f029d37387f5c0e3e2b98c23dd53cf1d3618759a66d15dcae0feb5c1413d6dfb8ecc6f80edd0d899573740661f1bb961f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e6286686d8503cd3755e5813506e3a09a3d8d6b9e5497df7607a70f894a9dfce06e059ef401f47f54cf5dbd968d469ba45772983fbd74607f5b4ed3b32bf11b68367f6cc3666c53343e7853501e56690308a6dbd5b9e543b3623387ccad48e6d041e17edbca37aa6dab14d469d665874973218ab9b1cd4d3b6efc8fc26d80e9ed933db9815cf4c9d17d604949b49c228b60d6e7952edd8cce0f029533bb609785cb4f38eea996ac7361b759a69d15dca60ac6e76504fdbbe23f39b613b7866cf6c63563cb3745e5813506e1609a3d8363ae649409d65cad48e6d061e17edbca37aa6dab12d469d665974973218ab5b1cd4d3b6efc8fc16e099adf3c29a8072b34918c5b6c9314f02ea2c53a658dd023c2ef61d47f54cc5ea07469d665b74973218ab1f38a8a76ddf91f90f80678ece0b6b02cacd216114db66c73c09a8b34c9962f503e071b1ef38aa672a56b71a759a63d15dca60ac6e75504fdbbe23f35b8167aece0b6b02cacd2561141bb663731df114193c45162d8e956fa5450f9d3f41ff26e0ff3d80d155db32d76094798c71b115e540b356064f2b43b363e95b6951017935e1f6aa004686edd52a079ab53178da189a1d4bdf4a8b9e3adf5affe2f6ea098c0cdbab0df038689fcb13068f9a321dbbb73ad6c7513d53c7ee6d815d773c0e49193c766f73504fdbb984cc6f83ede0993db38d59f1f4d579614d40b9be248c62c373feedf1f394270c1e35656ac7b63bd6c7513d53edd88ec0aefb76d05dca60acee7050cf02f02beb96f91db01db2615edd0099bdcef563563cfd745e581350ae1f09a3d8b601cfcef879ca13068f9a32b5633b1debe3a89ea9766c5760d77d27e82e6570ffdae5a09e05e057d62df3bb603b64c3bcba01327b9debc7ac78faebbcb026a05c7f1246b1ed009eddb1f3a4c77c411e35656ac7763bd6c74d3dd3edd89ec0aefb6ed05dcae0feb5c7413d0bc0afac5be6f7c076f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7806e8bcb026a0dc001246b1ed029e0f63e7493f77401e35657aeef0a1637ddcd433fddc616f60d7fd43d05dca60acee7550cf02f02beb96f9bdb01d3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed93373332b9e813a2fac0928379084516c7b80e7a3f879ca13068f9a323d77f8c8b13e8eea997aeeb02fb0ebfe11e82e653056f739a86701f89575cbfc3ed80efb3cb367b6302b9e413a2fac0928378884516c7b81677fec3ce9e7a7c8a3a64cedd87ec7fab8a967ba1d3b10d875df0fba4b198cd5030eea59007e65dd327f00b64336ccab1b20b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75ce1f9d154fa5ce0b6b02ca5592308a6d1ff07c1c3b4fc7d284c1a3a602633e09f98f1debe3a69ee9e70e0703bbee1f83ee5206f7af830eea59007e65dd327f10b64363675edd00997d6ce486d9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a398196243f154e9bcb026a05c1509a3d80e00cf27f1f394270c1e351518f349c87fe2581f47f54cf5db3914d875ff04749732b87f1d7250cf02f02beb96f943b01d3cb367b6312b9e613a2fac0928378c84516c0781e753073c0983474d99dab14f1debe3a89ea976ecb3c0aefba7a0bb94c158fdcc413d0bc0afac5be63f039ee13a2fac0928379c84516c8780c745ac2a9e228347e63f25f0adb4a8d6f913f42f6eaf6a6064d85e4539d0ac95c1d3cad0ec58fa565a8c81bc9a707b8d014686edd52a079ab53178da189a1d4bdf4a8bb13adf5affe2f61a0b8c0cdbab4d0e343b96ede1b1dcb78f659c7acd8f9de605c750f38263a87981d79c4a7307c797323c9605c0805312f29f01cfe7f1f3a4ee717d9605cfe7c0f3c3f8793a38aa67a95aef8f803daef52aad7e6c68f599a155319441861f3bd0af00fccaba655efc7966cf1cc58ce7b6c29a80729f92308a4dda2057ed86aafb157a5db2fe66613a7472ad5f17cf1ef0be6b33bd5ee1107f8550e6fe92dab29f6bb622f8bf6c37559f8386cdd1fbc01d6ccfc0645efc1505b9bb0f9ae9be2c6ae1e2d94db6c7fd83169eefe2e329c5fd1c7d1d7054f76c9ea31db0f0c458f70e51cf10f7c75ff754fbd15eaf4bd6aff6d12f4e76aa7939ee7bd27eb437ea5c08653a95d496fd06da0f5b5be17adf94737273df6c12d4b667c255a2ede6f395efb45dca7d02e5b1cde9a17f71ffec017575d52e46dd63c276d16cbb5d6a6f3ee3337d17832e9f906a667b4e813a5658b82b08b8311e73b99fc9ba6dcfc82a0c1dd934c36dfd8945c79e16ee9e04dc8cfb754f434736cd8eb65ff7b570f725e066dcaffb1a3ab26976b4fdba9f85bb1f0137e37eddcfd0914db3a3edd7fd2ddcfd09b819f7ebfe868e6c9a1d6dbf1e60e11e40c0cdb85f0f307464d3ec68fbf5400bf740026ec6fd7aa0a1239b6647dbaf0759b807117033eed78382c37564d3ec68fb75a585bb92809b71bfae347464d3ec68fb759585bb8a809b71bfae327464d3ec68fbf5300bf730026ec6fd7a98a1239b6647dbaf875bb887137033eed775edb7cfba5f575bb8ab09b819f7eb6a434736cd8eb65f8fb1708f21e066dcafc7183ab26976b4fd7aac857b2c0137e37e3dd6d0914d33db7eede8bdbcb26cdf133ce4549ff478cd87b2e0f918785cc494a3382875d4cf25d53775bfa1d521432b1c07e300e8e7a02f4cc6f7fbc59f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66fcc6213e5f91729f90308a0d9f49b9b8cfafea7ea55e97acbf5998ba9d5aebf740ec7ecb4a0b0c7f49e0107f8550a6c979b5657b6ab6a2e0c8ed86e35ae3b6dc177b1dd2dbd28c7f99177f45509ffdc0e3e0fdfc14cf0183e780450b7cef341edf6543dc685c56aabebfd332a8ddcefb8cfaa0a61fc5eeff704d0b0c4d3f72ec3b111cbe3d8501a724e491c7c5b36147f54cb5057b8d3a991a1743998ba19e7b1dd4b300fccaba657e2ff0c884cfe45dc56060f004167d646a42c65345c6d38f8ce742329e9bc9784e27e3e94dc6f338194f57329e96643c23c9781e22e3b98b8ce73c329eebc87872710e9e0dcf73643c1dc8784e22e3194fc65348c6338c8ce720194f7f329e1f90f1dc4ac6733919cf99643c7dc8789e24e3e94cc67305194f828c673419cf60329e7bc8784ac978da92f1dc40c6730a194f05194f7b329e09643ccdc9788693f15c4ac633808ce712329edbc978ce26e3b99a8ce769329e72329e62329e56643c63c8788690f1dc4bc6730119cf4d643ca791f1f422e39948c6d38d8ca70519cf23643c03c978ee24e339978ce75a329ecbc8789e25e32923e339918c671c194f53329ea1643cf793f1b423e3b9888ce716329e33c87892643c4f90f17421e3399e8c671419cf20329ebbc9784ac878ae27e3799e8ca70719cfc9643c35643ccdc8781e26e379808ce762329edbc878ce22e3b98a8ce729329e4e643c2790f11491f15493f15492f1f425e3399f8ce746329e53c9787a92f13c46c6d39d8ce738329e11643c0f92f1dc41c6730e19cf35643c5792f1b426e36943c6f30c194f47329e02029e4470e4b79812f0ff0360936f067d0cb62696f5c9735829af8e8b53db1eb9ee2696757f6461409d3e84ba2475bef4fb4d299dd05712e6c55f11707c44c2d3918ce719329e36643cadc978ae24e3b9868ce71c329e3bc8781e24e31941c6731c194f77329ec7c8787a92f19c4ac6732319cff9643c7dc9782ac978aac9788ac8784e20e3e944c6f31419cf55643c6791f1dc46c6733119cf03643c0f93f13423e3a921e339998ca70719cff3643cd793f19490f1dc4dc633888c671419cff1643c5dc8789e20e34992f19c41c6730b19cf45643cedc878ee27e3194ac6d3948c671c19cf89643c65643ccf92f15c46c6732d19cfb9643c7792f10c24e379848ca705194f37329e89643cbdc8784e23e3b9898ce702329e7bc9788690f18c21e36945c6534cc6534ec6f33419cfd5643c6793f1dc4ec6730919cf00329e4bc9788693f13427e39940c6d39e8ca7828ce714329e1bc878da92f19492f1dc43c633988c6734194f828ce70a329ece643c4f92f1f421e339938ce772329e5bc9787e40c6d39f8ce72019cf30329e42329ef1643c2791f17420e3798e8c673f19cf75643ce791f1dc45c6f31019cf48329e96643c5dc9781e27e3e94dc6733a19cfcd643c1792f1f423e3a922e36942c633d6e0c1ffab77c3e4fc48be1d5408ff1fa83b97b7d6eb9232f28e92bad7b5c7b0a9faee7654df3d41ed9484f9dd505f61df033c7b1cf17c68f098be8b205f019aed326c8a71a723c65d06a3ccef0446d16f17f0ec72c4b3dbe0317d1741be2768b6c3b029c6ed8e1877188c32bf1d1845bf1dc0b3c311cf4e83c7f45d04f9bea0d936c3a618b73a62dc6630cafc566014fdb601cf36473cdb0d1ed37711e4fb81661f1836c5b8c511e30706a3cc6f0146d1ef03e0f9c011cf5683c7f45d04f9fea0d966c3a618373962dc6c30cafc266014fd3603cf66473c5b0c1ed37711e40780661b0d9b62dce08871a3c128f31b8051f4db083c1b1df16c32784cdf45901f089aad376c8a719d23c6f506a3ccaf0346d16f3df0ac77c4b3c1e0317d17417e1068b6d6b029c6358e18d71a8c32bf061845bfb5c0b3d611cf3a83c7f45d04f94ad06cb561538cab1c31ae3618657e15308a7eab8167b5239e35068fe9bb08f255a0d94ac3a6185738625c6930cafc0a6014fd5602cf4a473cab0c1ed37711e4878166cb0d9b625ce68871b9c128f3cb8051f45b0e3ccb1df1ac30784cdf45901f0e9a2d356c8a718923c6a506a3cc2f0146d16f29f02c75c4b3cce0317d1741be1a345b6cd814e322478c8b0d46995f048ca2df62e059ec886789c163fa2e82fc18d06ca161538c0b1c312e3418657e01308a7e0b8167a1239e45068fe9bb08f26341b3f9864d31ce73c438df6094f979c028facd079ef98e7816183ca6ef22c8df0d36e1ed0eb6f775be1bd8ded3f9ae607b57e7bb80ed1d9def0cb6b775be13d8ded2f972b0bda9f31dc1f686ce9781ed759def00b6d774be17d85ed5f9de609babf349b0cdd1f93e609badf357816d96ce5f0db6993a7f0dd866e8fcb5609baef3d7816d9ace5f0fb6a93a7f03d8a6e8fc8d609bacf337816d92cedf0cb65774fe16b0bdacf3b782ed259dbf0d6c2feafced607b41e7ef00dba33a7f27d8eed3f9bbc07648e7ef01dba73a7f2fd83ed3f9fbc1f6439d7f006c9febfc8360fb91ce3f04b61febfc60b0fd44e78780eda73a3f146c3fd3f987c1f6739d1f01b65fe8fc2360fba5ce8f04dbaf747e14d87eadf3a3c1f61b9d1f07b6dfeafc78b0fd4ee76bc0f67b9d9f00b63fe8fc6360fba3ce4f04db9f74fe71b0fd59e79f00db5f74fe49b07da1f34f81ed4b9d7f1a6c5fe9fc3360fb5ae79f05db373aff1cd8feaaf3cf83ed6f3a8f63ddfe5de74b8278dbd96f83daa9047c8b3f55e61f3adfdc2823cb16429913750747f58c43bd8b27edb0b4cbca26edf0fb609376f83db0493bfc2ed8a41d7e076cd20ebf0d366987df029bb4c36f824ddae137c026edf0eb609376f835b0493bfc2ad8923a3f176cd20ecf019bb4c3b3c126edf02cb0493b3c136cd20ecf009bb4c3d3c126edf034b0493b3c156cd20e4f019bb4c393c126edf024b0493bfc0ad8a41d7e196cd20ebf043669875f049bb4c32f804ddae147c126edf07d6093fde55bb049db7c086cd2367f0a36699b3f039bb4cd3f049bb4cd9f834ddae61f814ddae61f834ddae69f804ddae69f824ddae69f814ddae69f834ddae65f804ddae65f824ddae65f816db4ceff1a6cd236ff066cd236ff166cd236ff0e6cd236ff1e6cd236ff016cd236ff116cd236ff096cd236ff196cd236ff056cd2367f0136699bbf049bb4cd5f814ddae6afc1266df337607b5ee7a5ad6e01367956aca6d2ef39e1383c78ce2f4cc920deb61fa724e49f83bacbd4848ce755329e2a329e7e643c1792f19c4ec6731f194f4b329ee9643c6f91f1fc958c673519cf2a329e6d643c5bc978ce23e3d94fc67312194f2119cf1c329e61643cef93f11c24e3e94fc6f303329ecbc978ce24e33944c67305194f828ce70d329ea9643c2bc9785690f17c40c6b3858ca7948ca72d19cf29643c15643cedc9789a93f1cc22e3194ec6f32e19cfa5643c03c8782e21e3399b8ca7988ca71519cf64329e31643caf91f12c27e35946c6b3998c671319cf05643c7bc9783e24e3398d8ca70519cf0c329eb7c9780692f19c4bc6339f8ce732329e13c9789a92f1cc25e3594ac6b3848c671e19cf46329e0d643cedc8782e22e3d943c6b39b8ce70c329ee3c978a691f1bc49c633888ca7848ca70719cfc9643ccdc8786693f12c26e35944c6f31e19cf7a329e75643cdf92f1ec22e3d949c6731619cf09643c45643c53c878aac9785e27e3a924e3e94bc6733e19cfa9643c3dc9788e23e39949c6b3908c670119cf3b643c6bc978d690f1ec20e3d94ec6730e19cf95643cadc978da90f14c22e32920e04900470036f97f53b07da3f307c126dfebd90fb6af757e3ed8bed2f9e7c1f68cc5d6c4c2270cdf804dde6d7e166c72fff36bb0c93b015f814dceabc4bf9a9fdbf648fe26b08cf8696ae1477f5f59b8248fdb5b964906f16e6ff4950c8efc9e5211703c4bc233898ca70d194f6b329e2bc978ce21e3d94ec6b3838c670d19cf5a329e77c8781690f12c24e39949c6731c194f4f329e53c978ce27e3e94bc65349c6f33a194f3519cf14329e22329e13c878ce22e3d949c6b38b8ce75b329e75643cebc978de23e35944c6b3988c6736194f33329e93c9787a90f19490f10c22e379938c671a19cff1643c6790f1ec26e3d943c67311194f3b329e0d643c1bc978e691f12c21e3594ac633978ca72919cf89643c9791f1cc27e339978c672019cfdb643c33c8785a90f19c46c6f32119cf5e329e0bc8783691f16c26e35946c6b39c8ce735329e31643c93c9785a91f11493f19c4dc6730919cf00329e4bc978de25e3194ec6338b8ca739194f7b329e0a329e53c878da92f19492f16c21e3f9808c670519cf4a329ea9643c6f90f124c878ae20e33944c6732619cfe5643c3f20e3e94fc673908ce77d329e61643c73c8780ac9784e22e3d94fc6731e19cf56329e6d643cabc8785693f1fc958ce72d329ee9643c2dc978ee23e3399d8ce742329e7e643c55643caf92f13421e3196be199ef8847faaec8ba657e7e23f7bddbf0bd3b4f7cef347cefcc13dfdb0ddfdbf3c4f756c3f7d63cf1bdc5f0bd254f7c6f327c6fca13df1b0cdf1bf2c4f73ac3f7ba3cf1bdc6f0bd264f7caf327cafca13df2b0cdf2bf2c4f732c3f7b23cf1bdc4f0bd244f7c2f327c2fca13df0b0cdf0bf2c437f3f5b7eaa72cdf82d8ab7f13f07f1c3f6ebf23c6f906a3ccef0746b1e1f8ef3d1cf1445dbbf720f0adb490be8bf20e7d02fe5f018cae62aa87c128f3b698c2f1462b1cf144dd73a820f0adb4906f39ca37b112f07f1c3fc5554c55188c326f8b291cffaba7239ea87b253d097c2b2de45b8ef20de004fc1fc7277215533d0d4699b7c5148e37d1d7114fd43d9ebe04be9516f22c469e9927e0fffd80d1554cf5351865de16535b81a79f239ea87b53fd087c2b2da4ef99f4594ec0fffb03a3ab98ea6730cabc2da6b6004f7f473c51f7d4fa13f8565ac8bb51f20e6b02fe3f00185dc5547f8351e66d31b509780638e289ba173880c0b7d262a0cecb377212f0ff81c0e82aa606188c326f8ba90dc033d0114fd43dcc8104be951683745ebec19980ff0f0246573135d06094795b4cad039e418e78a2eebd0e22f0adb4a8d47919032101ffaf0446573135c86094795b4ce1786d958e78a2ee195712f8565a48df18e9339880ff5701e320478c9506a3cc0f0246b1ad029e2a473c51f7baab087c2b2da4affb4afd9b80ff0f03465731556530cabc2da65600cf30473c51f7e88711f8565a0cd779f9864702fe3f1c185dc5d4308351e66d31b50c78863be2897ab6309cc0b7d242c63e906ff225e0ff385eb6ab981a6e30cabc2da696004fb5239e4506cf228b16c7cab7d242befdb258ff26e0ff6380d1554c551b8c326f8ba945c033c6114fd4b39c3104be9516d2b773a1fe4dc0ffc702a3ab981a6330cabc2da670fce5b18e78a29e418dcd81efa8e729b9f01df56c2017bea3ee73e7c277d43ddb5cf88ebaff980bdf51f7d272e13beabe502e7c47dde3c885efa8ebf55cf88ebaf6cc85efa8eba85cf88eba26c885efa8f3db5cf88e3a57cb85efa8f30edf9efbf63c6edfc7f2dc215fdbf363790c3d96c7127f6de0af0d72e5db1f4bfcb541ae7ce7ebb5816fcf73df9ecbf55741107d3db6cc91ef25866f99c7e72c4b1cf95e64f896797c66b0c891ef05866f99c7fbdf0b1cf92e327ccbfc821cf86e65f86e9543df6d0cdf6d2cbe5d6cef4470f8f5b730e094843cc6c042073c8eea59aad6bb58afebbb18d76bbb6f63ee2fc5506631e8e7baed9075676a3b5ac4e7bb34013e64cc38659367b1ef834ddad0f7c026cfd8df059bb4f3ef804d9eefbc0d3679fef316d886ebfc21b0c97358ecff2ecfd2b783ad52e7b1dff5209ddf0a36e99784fd7da56fd916b049ff40ec672a7d3c37814dfae962ff46e96bbd016cd25f1efbd5c93b0febc026efad607faefd3abf066cf28d4aec47f4b5ceaf02db373abf126ccfe9fc0ab03dadf3f781ed4b9dff166c4fe9fc02b07da1f30bc1f6a4ce2f06db5f74fe4db0fd59e7df00db133aff3ad81ed7797c2fec4f3aff21d826ea3cbe8ff4479ddf0db6c7741edf83f983ceef04dbef75fe35b04dd0f957c156a3f373c1f63b9d9f03b6f13a3f1b6cbfd5f959601ba7f333c1f61b9d9f01b65febfc74b08dd6f96960fb95ce4f05db289d9f02b6913a3f196cbfd4f949607b44e7ff0ab65fe8fc22b035d1f9256093f105b1cf877c337319d864dc6ceccb2363098c05db713a3f066c2d74be1a6cf29db5e16093b17a87812da1f355603b41e72bc126e73a83c02663ad0c049b9c970c005b6b9def0f363987e8073619fbb02fd8e47b9e3dc126637a57804dbee3df036ca7eafc7cb0c9f866fbc126df5c3b08361947f86bb0c9b796bf01db593aff1cd864cc97a7c1768ece7f09b67375fe29b0c9f739bf005b89ce3f09b6b63aff17b09daff37f069b8c0ff604d8e49b6e8f834dc6e1fd13d8e4dbc913c176b1ceff116c97e8fc6360937154fe0036194bf2f7606ba7f313c026df90ae01db153aff3bb0c9d816e3c176a5ceff166c3286c138b075d0f9df80ad4ce77f0db68e3a3f1a6ce53aff2bb075d2f95160ebacf323c1d645e77f09b6ae3aff08d8bae9bcb4336a7f56fbf9013d9f0ce23dcffe38387cca749e2d0cc813e7796b31f0a0af7db1d7bd2c758e2c6d4113bd5e89a17de07b6fecbed3e7e71fe97515eaf5ee357c174299d6ba7150cbc931bfa95e6ebfb11cde139275cb325782fd4363ddad757d3f7254dfbd069370a30e52e664cda48e8ddb75ded1fbf0656a1f90580b40439c92901706375a9595e2b9705d783e029e7db1f3a4af7d5dc404ee5b715ffb9af744cd582b86327b41bf0f1de887fbbaac5be6c59f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66c57340e7f159b3943b40c228b67dc0e3e23e3f3e8795f5abe73acbceabf5bb2f76bf873fdf6ba6d75b6ad4b910cafc1d9e39add2791cc753b65bd4b674f09c30e3b6147f45501f7c1674c011cf3e83679f450bc997c4e6bb6c881b8dcb4a55bf15f58c7dbfa1eb018ba6aef6d77d7a5d0586a6b8bf7e6cf0e0b3d122e0fd44ff26603d9f401d1cece319e342fce1beb40f6c92ff18185d6c673c96487b20cfc3f1d9b494d96f3c178f7fdb9795ba6c37f6409d92c191f15d08650e41dbf799ce63df9003a0dbef2cff9729d3736ad14fd57957fc754e6ddf9dc099043fe87b07b0c6e4fbb0f7510a74123f622f84fc6fa13f8794133d446b6157fb88f4e9447673b98f8de58aa1cc6e4bfd9341bcf5df65f0ec3298d536f911c4d9efe0f8efaa4dda1da1d195a09194d9071aed77c4b3cfe0110ef1a7cac8f66f6e9491650ba1cc97d046a9ba483b2ff5c4be2d780c70751c135fb26e99b79d1b7f048c661d557c743bb596775fecbc0dabffd7bf417b1177ffaf7f83182a008ec0587f29ac5fb89a07d1c71629f33f8de3a88b6b0cdc96a69ea8b394f95fd00eb52f49e7b339d73f56d76d51e7fabb1df02482c3afbdd594e9f88ec7983d0e781cd5b3d476ecfad0a8533194b918eae9e03c26e37bb5bbc0b78b6d8e5ac839d45e438b4228d3b224fd2b6d47948e78adfa514eea52663d1f2cb5d445cab42aa9ad4b0bb0c7c9e472bbed803aa9f5eeb3d455ca9c5c52abcba93a9f80ed84f74d2eb2fc5fa64ced018e6bb32dfe3aa7b6ef56e04c821ff4fd01b0c6e4fbb0ef6ac8f9bef8117b21e42f2ca92d2be5440fd15ad8d53e22effc21bbb9dc5e63b96228b3dd52ff64106ffdb7193cdb0c66b54dce28a9cd4b1cb96c37b74768540a1a4919bc7f2cc7767cefce76dcdfe7883beab8bf0f18cd7613cf5d5cb2ed37d8cc7ba8b6f3412983e76452a66349fa57b5b3094b59f3deb08bfb98f86e6900f5088cbaca8431e0e0dab01caf9da49d123fedc1be4fe745e7f686768550a66749fad7e179b7f5dea5797d87d714c26dee5bf8eec75525b5dc2aee653bedd3bf4560fb54ffb6089c5ca795dbee190a87ed9ee10d25b5ecb8ac701db2d4c5bc466e121c794ffd3ba32cde77cbb41cfa52d3416319a5efa716a67d869f16b06c6cef6a74282d8de23f087c1f1bcc365d653fc098dba7f3e6be82d7c652e6be92f4afb4496659b5edbf38b9561fd98ea21db62718931f036352e74bbfdf94dae70e1af59779f1a718e57ecf41e089bfed4abfaf94cd7de0fdc0e3a26d77d44697e231b6456cebed56693bfe7f6c6895c3e7b5d663bef9ccbd85918fc7775995edfe934d8bbd161e57cf51a2b4d86bf11d9f169d87d8da399b16b9ecfb10a5c58716df316a310cef7b66d2628f85c7c5bda84c5aecb1f88e4f8b2ea5999e6ba016bb2d3caeee3d446921feb265fe9080b985918fc77779a5ed3e994d8b5d161e57d7cd515aecb2f88e4f8b0e9df11e5d262d765a78e2bf3f97598b9d16dff169d1b51bdec3cba4c50e0b8fab67ba515aecb0f88e312e86daeee5d8b4d86ee1d99e632db65b7cc7787ed8d976afcda6c5360b8f83fbae19b5d866f11da31683f1be6b262db65a78b6e6588bad16dff16951d9c9764fd8a6c507161e57f784a3b4f8c0e23b3e2d067755beb7d4418b2d169e2d39d6628bc5778cd750a9b8d85c072d365b7836e7588bcd16dff16951953ad7da54072d36597836e5588b4d16dff169519a3aa66eac83161b2d3c1b73acc5468bef18e322753db9a10e5a6cb0f06cc8b1161b2cbe633c8ea4e2627d1db4586fe1599f632dd65b7cc7a7c5b0d4fda77575d0629d85675d8eb55867f11de33d97545cacad83166b2d3c6b73acc55a8beff8b4e8983aa6aea983166b2c3c6b72acc51a8beff8b4189a7a26b6ba0e5aacb6f0acceb116ab2dbe633cef4cb517abeaa0c52a0bcfaa1c6bb1cae23bc6f3ced4fd8b9575d062a58567658eb55869f11d63db993aef5c51072d56587856e4588b1516df319e77a6b4585e072d965b7896e7588be516df319e77a68e23cbeaa0c5320b8fabf144a2b45866f11d635ca4dacea575d062a98567698eb5586af11de37dad54dbb9a40e5a2cb1f0b81aaf214a8b2516df315e8fa4eef12dae83168b2d3c8b73acc5628bef189f15a5cec117d5418b45169e4539d66211f8de1fbbef747f6ef1217db1ae30b4288432cddba67fa52f56948eb20eec57867559187b5dd2fdca1644d46521d445ca9c007569113819efa7dc515d5331331feaa4d6fb89a5ae52a64ddb5a5d4ed2f9046c9343a0dbf996ffcb5460cc27212ffaa93abf1f7f9d53b1fa1e7026c10ffa7e175863f2dd017d17e8247ec45e08f9b66d6bcb4a39d143b41676b58fccd3796437975b642c570c65e659ea9f0ce2adfffb06cffb0673eabd0788338923376d579a695e84465780465206fbec7de288c7ec43281ce24f9591eddfdc2823cb164299cba08dc27ea552cf447064bf49476d5907649775cbbcf82b06db7e6034eba8e2e310f4fd94b122641c09659371213ac27aba183655d7ae8eea2abe64dd32df1518659c8a2eb9672cab2b63678351f17477a0198ebd2153a6e34577e0e9e680c7513d53c7a11e469dba1a752a8632f86e630f07f52c00bfb26e99ef01be5d6c73d4428ec9971a5a1442991b8cf3c7281d651d2a7ebb58ead2cb715d64ddd22ef5ca81ef0ac37727c37722387c3b0741e6fdab02987b3a6056ebed1dff7a4bf1bc4d624afc74823af5010de2aa13ae4bcef3fa18da1642fe4138cf937252568e5fc2ae6259b625b29bcb7537962b8632bd2cf54f06f1d6bfb7c1d3db6056dbe42e38b773b03fa462a097c121f39d40bbde11daf502eda40c1effba38d2aea7c1d3d3f0ad78e41ca707d8e45c41f813f0ff8e39e036dbbd1e166eb1e13871b6739dcef133663cd7e90c8c62eb093c158e3433b7f5a5863e785c6e6e9491650ba1cc383836262c65d57e7771416dbd9a6a7b6cef8ee936bdb903bd709cc600f4090c0d03d04bead9cc01cff141ed588de36baac70d7e78e85d43d38f1e05add0c0c4df024b359a800df34d2db620387c48ca42b0c99094cdc0d6c4900587c294f232a49d0bb9500f5977a1c1d90258e2f48dc379ca9429748e031e17a1ac424786f4d4a173dfb8113543313e9a199cf5891df5bfa619ca45adcbd57630f78924cc9b3158e8c87f53a86f12e6c59fda3632b4ea98c1431eed33eee109a3868eae198f42993b36e60b82c33780f91b25b8ab9d0e03002b8c8d4333a35ed860c8ff64c31c1f3f67398e996b6a13803f998e07dd5a3ad04dad5fc6be1d3278e4c83b26548e1c31e4ba09a387d48ca81e8d5bb385a15cd49696ff37079bad89c7b26ac2660b973dce62b34d38ca700bb0c991ab25d884e778b03585bc9437b78c9370bd10d62fbb94fa9f12a799aef871416d08c8e158b5ab6aff55a772ea13b2ea54480d6dac36a71aba58dd31544313abafd8a9a187d550c36a68e13383f4d0c16aa8e07382f450c0ea6b1725417a68dff383daa17bd57408382f0ad243f3aadb349704e9d32e35b46ebb203d74aeba75d93e487fe64dbd5baf4edfd56d0175caab2ef1d4e5883a0555a79eeaf685ba95a54ee9d4e9b23a1554a76fea72a4b7d6ba4f98ae0ad3d561ba264cd786e9ba305d1fa61bc27463986e0ad3cd61ba254cb786e9b630dd1ea63bc2746798ee0ad3dd61ba27480fef7c6f901e7e5d0dff7c7f901e1afa81203d6cf483417a48e98782f470d38383f450d44382f430d54383f410d60f07e9e1ad4704e9a1731f0dd243edaa21784707e9e1b0d530d96af86c35f4af1a26580d29ac861a564315ab618dd510c86a68e42783f430cc6ac8e667c2f46c901ed2f9f930bd10a617c3f452985e0ed32b417a7870356cf894203dccb81a7e7c7a901eae7c66901ede5c0d7bae864357c3a4abe1d3d5b0ea6a987735fcbb1a16fead30bd1da67782f42309f528463da250b7ffd56330758b7a6190be75be38483fe2568ffc551708d5254475915919a4bb50a92e65aa8b9dea72a8ba60aa2ea9aa8baeeab2acba70ab2eedaa8bbf7ae541bd02a25e8951af08a957a6d42b64ea953af58aa17a4d54bd76a95e2356af55ef0bd2b7c50f04e947a5ea76b87a34a0e251ddbeff2c4c3f0cd3e761fa51987e1ca69f84e9a761fa59987e1ea4873056c31dabe192d5d0ca6ac865353cb31aca590d05ad8688fe63901e7a5a0d5dfd97203dfcf59761fa2a480fc1fd4d901e7efd6f61fa364c7f0fd33fc2f4cf30fd2ba81d4a1b1b8b33750ba3af5282c1353543478da929a9a92e19356164cd8831239f289938a2667849f56343c70d1b593d1117fe5c2f2ce380f719376ef013252346570d7dbca47a424d49f5b092caea09a3ab0e3b50ff532f74f6911e075755453bfbf7ef43fa7feae9b4a56efb6484f51b33d7ed84a6f510e4c4fa2cd4b969fd2af4a43e4ac9e5ecdde973dd92f123ab6b4a4a4b46877fc3836bf5c4a155ed4bf07fe34391c7d7948caf193caea664d8b8ea51251ddae37a271d5f8f4a1424dcc0b439b37ee2b4d2df52aa5788ed3baf1e0a7c715efd48ffdbf721fd1ff574daa2a41e352caecf426525f523ac28899465fc84ca9a718387d4442fdce7fb2c7c7d7daa796f3dabd9ac6d3d9c25eab3d0a56deb47787d7d9c8dcdc259f0ff015dc8f1201c4f06009b2d6c6f00000027cf1f8b08000000000000ffed9d77701cc795c6679118565810cc99902c538ce06291c104e64c9992ac1c98409116495024942ccb922cc939e76c39cb39675bce392739e7ecf2d5dd3f57bebaab525df76c3fe34373668d5dcd03df60df543d6ccfdbde79bffee64dcf6cf7ec20131497bf1acbb872adb1c705672ff47ebf7bcd3fb6a52dc16de539393329e1ac4909676d4a38eb52c2599f12ce8694704e4809e7c494704e4a9033037c5cbc9353c69b4d19ef79413af2b631259cb9947036a584734a4a389b53c23935259cd352c2393d259c3352c23933259cb352c2393b259c7352c23937259cf352c2393f259c0b52c2b930259c8b52c2d99212cef353c27941829ccb8193c6c82f74af8f77af8bddeb45ee75897b5dea5e97b936d6b975bbcd15c6561a6bf5de5b65998dd9c1f282f75ebbb10e639dc6badc7b2deebd6e633dc67a8df5195b6d6c8db1b5c6d6195bef34d9606ca3b14dc6361bdb626cabb16dc6b61bdb616ca7b15dc6761bdb636cafb18b8d3dc1d83e639718bbd4d865c69e68ec728fe50a63571abbcad8d5c6ae3176adb1eb8c5d6fec0663fb8d1d3076d0d82163878d0d183b62ec4663478d1d33f6246337193b6eec84b193c6068d9d3276b3b1d3c6ce181b32768bb15b3dcd6e3376bbb13b8c3dd9e3bcd3d8538cdd65eca9c6ee36768fb17b8d3dcdd87dc6ee37f680b1a71b7b86b1671a7b96b1671b7b8eb1e71a7b9eb1e71b7b81b1171a7b91b1171b7b89b1971a7b99b1971b7b85b1571a7b95b1573b163a105e63ecb5c65e67ecf5c6de60ec41636f34f626636f36f616636f35f636636f37f690b177187ba7b177197bb7b1f7187bafb1f7197bbfb10f18fba0b10f19fbb0b18f18fba8b18f19fbb8b14f18fba4b14f19fbb4b1cf187bd8d8678d7dced8e78d7dc1d8178d7dc9d8978d7dc5d8578d7dcdd8d78d7dc3d3fc9bc6be65ecdbc6bee37cdf75afdf7375e998ffbe7bfd817bfda17bfd917bfdb157ff116ffd27defa4fddebcfdcebcfddeb2fdceb2fddebafdcebafddeb6fdceb6fddebefdcebefddeb1fdceb1fddeb9fdceb9fddeb5fdcab9d576b9f512c4f0c8697fe20a13ea963a0d78eab93d8febc9d9d13aa75efd16b8bf3d7b9757acd387fbd5baff7fc0d6ebdc1dbce44b73ed1f3e7dc7acef34f71eb533cff54b73ed5f34f77ebd33dfff96efd7cf067dd7bc586155facafd6b932e0a3fcac015fbdf3d582af813607be09ce570f3edabf0de09be47c13c037d9f926822feb7c93484b63e7395f7f9054aee40fd8ed3626bd5d3717914b9ef7a0dd6e1313ef94e4790fd9ed3633f0dafc98eab6d5087933cdf972e09bee7c4de0735dd0bf8e39eb9be97ccde09be57c53c137dbf9a6816f8ef34d07df5ce79b01be79ce37137cf39d6f16f81638df6cf02d74be39e05be47c73c1d7e27cf3c077bef3cd07df05ceb7007cd45f2e04df85ceb7087c746dd7023ebace3b1f7c74cd7781f3d97e626206e2393ff551613cea9fc1f778ea9bc1b798fa65f05d447d32f896406cf22d857e857ccb9c8ffa28fb5e9f2bf707491d1385f0185e9df476cd96ed76d726bfdd700e6c5d30ac753fc4590d5aad77e504ef0f69c3d8741d4371c85f07e51d5097ea911e749e2176dbefaf71e5f5253ed7e77d2e0775d644b4bf3f48b6fd6b3d9eb51e733db49f29678f68ce8e7a293b67af80ba7eeed135cf78ccd9ddc0917cceb6b76bce8e7a293b6707a0ae9f7b74dd3b1e73f66ae060c8d96e9e9c2de435678be36041109d7bf4dd673ce6ec51e0483e673b356747bf949db3f7425d3ff7e8fbef78ccd95b8123f99cedeed66b83512f65e7ec0ba0ae9f7b3416331e73f67ee060c8d983dacf8e7a293b675f0775fddca371c1f198b32f068ee473b6972967db356783e29c661044e71e8d518fc79c7d103892cfd9433a3e3bfaa5ec9cfd04d4f5738fe64bc663cebed795ed3cc377dd3cc37cf07dcff916006ff2b97db88d29b7db34b78bf77a0441748ed2dcdd78cced875dd9e6f10fe0de03f2fd90ee4b00df8f9cef02f0fdd8bb6783e918e8d26360f46d2af718f805d4f57399e691c7e331f03de060c8d96ecdd9d1b7a9dc9cfd1bd4f5738fee69188f39fb6be060c8d91ecdd9d1b7a9dc9cfd27d4f5736f892b8fc79cfd872bdbeb859fb9eb8565e0fbb9f32d07df2f9c6f05f87ee97c2bc1f72be76b05dfaf9d6f15f87ee37c79f0fdd6f9dac0f73be72b80eff7ced70ebe3f385f07f8fee87c9de0fb93f37581efcfced70dbebf385f0ff8feea7cbdce67efc9a37bafbee27c76df9246fd41b2fb96eeb1a46dd3fa8a3188dde4c56e1ac3d8cd5eece688d82b19626721062d196fbd1fca2b7979f239e0c158ab928fd56edbde1a8cbeedab8027cfd0f62cc4180d4f1e78da92e709cf9f85e4b71beee3564fd32cc46a8576b533b42b03b168dbb44ef172e0c3febb3d82b12379c6420662d1b669bd0318c987e7133aafd3f163cf878b33c3bc0cc752784d44f1e8f94fc4b10afc54e791e9c36ccb1c5b23bc8fe7d636cfc79497615e502cda36ad53bc46684fdbd8331646cb98f718b9fa880cc4a26dfbb1f1785f39f69a8d6abfe6c0770efaa442a57d5223b08dc5754adcbe96129be37c958118d4b791e605f0539d99ee0709b66fdb06fd2ec3f15728f7fa0dfb83e4f3b890c7e37a343cedc0c371ec331daf793cef3f1a249b6b9d9e566d9e5639a8d301fa7532e857ea3a84e229b3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb3322bb37c66bcff02e737a9de0a218ce42b000fc7387ff80c28b72ddabe9dd7f929cceb243f6f51c8e39c25dd63b8d46b731dd4f97b66b8ee2f613edd9f1bc439cd15bcda8dea3e8bc6e0ecb958ce39c4b879e0a8f9cb96c462170e71cdb7d97bd4ec73c85a3d5d574468ca709fca084d339ea6789fe2728fc7e6e99cda61368eb9bf72e722512b2a2739b787f718f0ee9762ff41b950138cec3ff03cd39578ec917398345fdee5c5ae833aff9319de37742f2afdaf3bff9e275ba7dbdb367d6629f8bbbd6d4f719f258e7a6ffbadf059aaf37fd0a7bebe26f897661cf77f60bf1c405b71e98732ce9b277f1e2ecee3b797c1d3093c1cfd0cd3f5461e8f81a4e7f1bb3dada2ae63a84e17e8d7cda05fd4b528ad533c6556666556666556666556666556666556666556666556666556666556666596cf8cbf1525d62cd42b08611ca37b1fc2f90c7afe0b6ddfceeb3cb766382ef73c1ccd392df3da5c0775be5d335cf785aedc189c7dbf43dcbe6498cf2bb92f295e23b407e782b87ecfdde1f174446841e596c46217e7f193d778781ebfddd3b510a129d7f18a73aca8291eaf6d1e0fce8d360667df5b9285ed8cc5bd43717941f1f058ea001f95f1f7d11cfb19cf25fe7d3d140fe7af1f72da4e09b8f67d21cfd96ff4409bfa83b3f3bb0eeabc07fabef7b932dec381f78e3c1cf13e2da5e6a9493f9667d9e58bf3beab81b31fe260ec35c09a50ec368c9d714671c85f07e5cfd40cd7a57aa407694decf618a1678221bbffb936ef7339a8d31bd1fefe20d9f6f7793c7d1eb3dd271f843c7b18ceff5c7d526f8c464b4123aa83d7415ce74efffe4affbe42ec471bbc3af4d93aa8f315e8a3e2ee1f8d3a07709fc768db51e731ffbc309afb3cabfd3ead47a0bf48fa3ead472087f03eadc0dbfe32d83e713504f1e716aaf3736ffbfe35397d06ef03a33abf82fea2c9ddb3d8189c7dfd8df74c8dc5f7abb8fba4291e5ed7d07ba369bb65ee81fafd0932634e200b5e27509dbf78fbac3b867b55c467ff1ef359d28a9e4385df5f7cfdac0ebdf099fe4474281ef37d5e5b28af7ba12d54e7bfbc6bc0e4af5b8ad780c9b775e43509f5031d116da53aff0dc7da3fe11a8ff6137eef68a83dfb7d5a4a5d03927eb6cd63fd7c608c2de1f9c0f5b5c375fde7fc92d6e53e1fb8cbfb9cc4e703ff2fe45903dc87ced557af89d16819684475f0b741741ec167f9468d759cabefd3782d85fd731368caf5bb03fffce78fab455d232cf334c66b84e98e798ad3d9afeb8f17d2f932c9fb86f1b712ad10177f2bd1caa4671e74eb8775bc2e3897b1f34cb1e39e399d1f83d871cf9c1e8bd8cd5eece6318cad9aabe6923467782672f8fb337c66a95d4a5d9712430e3e579302c6da1430d6a580b13e058c0d29609c9002c68929609c9402c6c92960cc02e3b93cb733e853a8541faefd55ea5a036333fcef9242b9ffbf83f97fa994bcf6c1d80cdfe9422d5606a3d702bfe7713cfba1dcfff5420cf8bf0ba6a680715a0a18a7a78071460a1867a68071560a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a185b52c0787e0a182f4801e3e352c078610a181f9f02c6c5ca9808e3725ec642a58c9687e37ffe3d96ff39c6c0938fbae794e9fed9b2ffdf1af3f349db2a7d6e1cde5bc2fb3fe11edbb3ed38ee1d29f7d976a5fedf2a1363a15246ae7b81f0bea3d1f044dd1fd4c6cb58a89491ebf72ff81bbdd1f07481669d119a3130162a65e4ba57aedc7b39f19efeae08cd18180b9532e27dd509f2849a7597c1d3039a754768c6c058a89491ebbee42cc4180d4f2f68d613a1190363a15246a6dfb6859af596c183bf01eb8dd08c81b15029a3e559cda4595f193cab41b3be08cd2431224fd2cfc9ee8b88c5f19bc172db4e0cc83829058c9353c088f74970f45fa5ee93e8e3d5a750a93e5cfbabd47d12189be1f731a116f87b887fa7c55a5e9e92f74960ec754c5ae0ef55fe9d16eb8087e3f7335988311a1e62c8c1e7a6a680715a0a18a7a78071460a1867a68071560a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a18f1bb2ac3b562c9ef2febc679ecb8ef2ae33d76dcf792f11e5bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73c97143b0d63fcca38fe1891a725399e3cb61d63f50b687b7f044f86a9ed186b8380b61343da18d7a78071750a1855c7e23d8895305a9e8d4c3c1bcae0d9083c9b98783696c1b309783627cf13e6d4a632788821079f5b9d02c6f52960541d5547498caa63f5e8a88ccaa88cca782e18d3d0872b632af2b15029a3e5d9923c4fa8d9e63278b68066f4b9b61430f6a780713d2f63a15246cbb335799e50b32d65f06c05cde8736dbc8c854a192dcfb6e47942cdb696c1b30d34db1aa1190363a15246cbb33d799e50b36d65f06c07cdb64568c6c058a894d1f2ec489e27d46c7b193c3b40b3ed119a3130162a65b43c3b93e70935db5106cf4ed06c4784660c8c854a192dcfaee47942cd7696c1b30b34db19a1190363a15246cbb33b799e50b35d65f0ec06cd764568c6c058a894d1f2ec499e27d46c77193c7b40b3dd119a49655c9d02c6f5296064d6b15029a3e5d9cbc4b3a70c9ebdc0733113cfde32782e069e2724cf13e6d4c565f010430e3eb73a058ceb53c0a83aaa8e921855c7ead15119955119cb63ec4f01a3ee6b6594cac8f0fdaae46f912e1ee7b19bbcd84d55123beeb748e33db6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9e67935c4d63cd73caf86d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae792e29f6bee46317ca7dc6cc3ee0e178e60d533bf376bb97b86d3d9aa07e56ab4b3dad2ef6b4ca419d4b40bf4b19f4cb405cda36ad53bc72992f12c0cc14bb60fb9749d07e8ab1ded3c3c6bf8ca9ed717dfd65e33c765c5f3fde63c7f5f5e33db6e6b9e67935c4d63cd73caf86d89ae79ae7526263b93e18be6ea7e79fda6d3cd195ebdc3ab2929fea5c39a1f83a25d0638823b61e437aaea886d89ae79ae7d5105bf35cf3bc1a626b9e6b9e57436ccd73cdf36a88ad79ae795e0db135cf35cfab21b6e6b9bc3ccfc1fb3563c013783c41099ebdc278160ae3992d8c67aa309e75c2782609e3592a8ca75618cf0e613c5b85f1f408e3e914c65310c6b34818cf32613c7384f14c13c6b34118cf64613c75c278f2c278160be3992b8c672c7ecf500ecf74613ccb85f16485f16c14c6532f8c6795309e9dc278fa84f16c13c6b344184faf309e2e613cedc278360be36915c6334f18cf0c613ce709e36914c6d3208c67a5309eddc278d608e3992f8c67a6309e9c309e26613c1384f1ec11c6b34b18cf5a613cdb85f16c11c6d32d8c6793309e0e613c2b84f12c10c6334b18cf14613ccdc278260ae3c908e0c906673f932c0befef035f8df7597bbd3467c6f0fb973b7f0d7ce60a57ae8dd8f6e5e0a3df865f11f159d4e972684bbf2be71fdb12ea84b1fa619de23502c7154278260ae36916c6334518cf2c613c0b84f1ac10c6d3218c6793309e6e613c5b84f16c17c6b35618cf2e613c7b84f14c10c6d3248c27278c67a6309ef9c278d608e3d92d8c67a5309e06613c8dc278ce13c6334318cf3c613cadc278360be36917c6d3258ca75718cf12613cdb84f1f409e3d9298c6795309e7a613c1b85f16485f12c17c6335d18cf3e613c7385f12c16c69317c653278c67b2309e0dc278a609e399238c6799309e45c2780ac2783a85f1f408e3d92a8c6787309e5a613c4b85f14c12c6b34e18cf54613cb385f12c14c6b357184f4d040fc3ffbf0c79e8fe35da36adef13129b613f84fff7f34aa6365de5b655efb64bfc14af0eea1c741da9bddf0b3f4b5cfefd86f8ddfc2ad0e82aa6b6d0fec878fb873b36de57190043e0e91344f070dc8fcad4ce117998e0ff9fcd5badaef6b4f2f75d0eea5c09fa5dcda05f546ed3fad5c043e77162cd42bd754218c97719334f16da4c4ba963e06ae0e1382699da19e6ea355e9bd645e84e753057af616867d4b143ebd700cf065726d62cd4db2084917c5731f364a1cdb494cad56b8087e3d8616a6798abd77a6dda10a13bd5c15cbd96a19d51c70ead5f0b3c1b5d9958b3506fa31046f25dcdcbd3918536d3522a57af051e8e6387a99d61ae5ee7b5696384ee540773f53a8676461d3bb47e1dec076556e62866cb43bf2320d62cd4db2484917cd7b0f274e4b3d0665a4af563d7010f473fcfa47bd88f5defb5695384ee540773f57a8676461d3bb47e7d44ec9620592d6e1885163744f0dc30c65a50bc7299af4c21b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3049d2d0f3dc79358b3506fb31046f25dcbcb13fe2e68733072c978ebfd50be0178ae63d087a99de13de4fbbd366d8ed09deae0f1b59fa19d51c70eadef87fdb0bf0ce6eb53c8ac3a57c66c79e8ff67106b16ea6d11c248beeb7879c27e6c4b307229d58fed071e8e7e9ea99d613f76c06bd39608dda90e1e5f0718da1975ecd03ac55366658e63b63cf45c3662cd42bdad4218c977032b4f21fc7de3d660e452aa1f3b003cfb13e729f6630cba87fdd841af4d5b2374a73a98ab0719da1975ecd0fa41d80fe5305f9f4266d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569dab4767cb43ffff9258b3506f9b1046f2ed67e5690fe71db60523978cb7de0fe583c07320719ee2bc0383eee1bcc321af4ddb2274a73a787c1d626867d4b143eb87603f8c77e6eb53c8acb93136cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f26c776562cd42bded4218c9778097277ceec1f660e452eabe9d43c07390411fa67686f7ed1cf6dab43d4277aa83c7d7618676461d3bb47e18f683322b7314b3e5d9e1cac49a857a3b843092ef202f4fd88fed08462ea5fab1c3c0c3d1cf33b533ecc706bc36ed88d09dea60ae0e30b433ead8a1f501d80fcaaccc51cc9667a72b136b16eaed14c248be43bc3c613fb63318b994eac7068087a39f676a67d88f1df1dab4334277aa83b97a84a19d51c70ead1f81fda0ccca1cc56c7976b932b166a1de2e218ce43bcccc938536d352aa1f3b023c1cfd3c533bc37eec46af4dbb2274a73a98ab3732b433ead8a1f51b8167b72b136b16eaed16c248be01669e2cb4999652b97a23f0701c3b4ced0c73f5a8d7a6dd11ba531dccd5a30ced8c3a7668fd28f0ec716562cd42bd3d4218c9778499270b6da6a554ae1e051e8e6387a99d61ae1ef3dab4274277aa83b97a8ca19d51c70ead1f039ebdae4cac59a8b7570823f9b01fdbcbc4d3e8f1344668311e633779b19baa2476b317bbb94a626b9e6b9e57436ccd73cdf3a00a626b9e6b9e5743ec6acd35d5bc3a35cf9c43cd33e750f38c6a2e52f347938bdd990b86971a88c5303ed7369a3147e459288c679f309ed9c278a60ae399248c67a9309e5a613c3dc2783a85f11484f12c12c6b34c18cf1c613cd384f14c16c653278c272f8c67b1309eb9c278a60be3592e8c272b8ca75e18cf2a613c7dc2789608e3e915c6d3258ca75d184fab309e79c2786608e3394f184fa3309e06613c2b85f1ac11c6335f18cf4c613c39613c4dc2782608e3592b8ca75b184f87309e15c2781608e399258c678a309e66613c1385f16404f06483b37fdb81bf27a8051fdddfbf177c4f72e57de0ab898841db39063e1a3fa56dd8f3d58533ce66a881cfdc14c1f5a4887814e7a688cf8e85ee18ab1fd6295e2370dc248467a2309e66613c5384f1cc12c6b34018cf0a613c1dc278ba85f1ac15c63341184f93309e9c309e99c278e60be359238c67a5309e06613c8dc278ce13c6334318cf3c613cadc278da85f17409e3e915c6b344184f9f309e55c278ea85f16485f12c17c6335d18cf5c613c8b85f1e485f1d409e3992c8c679a309e39c2789609e359248ca7208ca753184f8f309e5a613c4b85f14c12c6335518cf6c613cfb84f12c14c65313c1b38f8927ee790afb04c4b6e3f0746d4a637459787f2c7e17b4cf63a4f5a3c0483ebc2f36cfc413f70c8abc80d8568b5550b64b16dec7df7570e554de63a4f5a89cc2fb1a5731f1c43db7639580d8560b9aaba07b00b2f03edec7cc9553ab3c465a8fcaa9665e9ef0ff07ac0c462ea5ee35c2638e631f32b5338fc75f82cfd0887c46f24a4fab1cd4198be748c4f507144f9995398ed9f2d05c13b1e2f96c2c7e47351ac6a8f32b034fd83fb606239752fde351e0e1387f30b533ecc78e7b6d6a8dd09dea60ae1e676867d4b143ebc72362b704c96a7162145a9c88e03931c65a50bc7299f7a5905982ce9687ee4524d62cd45b2184917c795e9eb07f5c118c5c4af58f278087e3fcc1d4ceb04f38e9b5694584ee54078faf930ced8c3a7668fd24ec8772988fa7905975ae8cd9f2d09c08b166a15e410823f98eb2f214f25968332da5fab193c0c3d1cf33e91ef663835e9b0a11ba531d3cbe0619da1975ecd0fa20ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e8b7c3c49a857aed4218c9778295a738efd01e8c5c4acd3b0c02cfc9c4798af30e0cba87f30ea7bc36b547e84e7530574f31b433ead8a1f553b01f945999955999955999955999955999955999955999955999955999955999955936b3e5a167b6136b16ea75086124df495e9ef0775b1dc1c8a5d4bcc329e0e19897616a6738ef70b3d7a68e08dda90ee6eacd0ced8c3a7668fd66d80fcaaccc51cc96879e1d47ac59a8d72984917c83ac3cc5f9d3ce60e452aa1fbb197838fa7926ddc37eecb4d7a6ce08dda90ee6ea698676461d3bb47e1af64339ccc753c8ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaab3ea1cc7ac3aabce71ccaa73f5e86c79e87f2c126b16ea75096124df29569ef670dea12b18b9949a77380d3c1cf3324cba87f30e67bc367545e84e75f0f83ac3d0cea86387d6cfc07e18efccc753c8acb93136cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc9a1bca1cc7acb9a1cc71cc1272c3f274bb32b166a15eb71046f2ddcccb133ef7a03b18b994ba6fe70cf09c66d087a99de17d3b435e9bba2374a73a787c0d31b433ead8a1f521d80fcaaccc51cc96a7c79589350bf57a843092ef34334f16da4c4ba97e6c087838fa79a67686fdd82d5e9b7a2274a73a98abb730b433ead8a1f55b80a7d79589350bf57a8530920fcf71bd4c3c8d1e4f638416e72ab6d5a2cf95cf73af5978bf0f18b9fa965e8f91d631c7c9d7083c7d4c3c4d1e4f538416e72ab6d5620d94ed9285f7d70023574ef5798cb41e95534dc0b38689a7d9e3698ed0e25cc5b65aac75e529ee350befaf0546ae9c5ae331d27a544e3503cf5a269eb83e69ed18c48e3bbec622765cae8c456cd55c3557cd55734ecd33e750f3cc39d43ca39a8bd29ce13a2a1c3ba5180130e0d20f65fcaec071edc9d4ce7cd4f7b1b55e9bf0fb188e399cabef1bcaaccc71cc4ce3161d592f36e913783cb40c316b319663907d5e9ba48d4196cb7c3c85ccaa7365cc36f6adc9c7eec87ab1499fc0e3a1e556662d98da19f607b705d11a53bc1cd4c13cbd8da19d19884bdba6f5db603f94c37c3c85ccaa7365cc36f6ed89c72e3e9b1d63933e81c743cbedcc5af0b4b3d81fdc11446b4cf1725007f3f40e867666202e6d9bd6ef80fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec27271ebb387e8fb1499fc0e3a1e5c9cc5af0b4b3387e7f6710ad31c5cb411ddce77732b433037169dbb47e27ec076556666556666556666556666556666556666556666556666556666556666596cd6c633f25f9d8e1ef713036e913783cb43c85590ba67686e3f77705d11a53bc1cd4c17d7e17433b331097b64deb77c17e5066658e62b6b19f9a78ece27c1ec6267d028f8796a7326bc1d3ce627f707710ad31c5cb411ddce77733b433037169dbb47e37ec8772988fa7905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7ead1d9c6be27f1d8ede1f83dc6267d028f87967b98b5e0696771fcfede205a638a97833a98a7f732b433037169dbb44ef1aa81f9780a993537c68659734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426ed8d84f4b3e76f87b768c4dfa041e0f2d4f63d682a99de1fd2ff705d11a53bc1cd4c13cbd8fa19d19884bdba6f5fb603f28b3324731dbd8f733c4ce7ab1499fc0e3a1e57e662d98da19f6070f04d11a53bc1cd4c17dfe00433b331097b64deb0f406cd43ba1d8e13d9014a3c6bd5adfd35db9167ccf70e53af03dd395ebc1f72c576e00dfb35d7902f89e03ed21df735d7939f89ee7ca6bc1f77c575e03be17b8721ff85ee8cabde07b912b0f81efc5ae7c0bf85ee2cab782efa5ae7c1bf85ee6cab783efe5ae7c07f85ee1ca4f06df2b5df94ef0bdca959f02be57bbf25de07b8d2b3f157caf75e5bbc1f73a57be077caf77e57bc1f706575e0cbe07237c6f74e5a781ef4dae7c1ff8deeccafbc0f716579e04beb7baf264f0bd0dcaf4fa76573e0f7c0fb97223f8dee1ca39f0bdd3959bc0f72e579e02be77bb7233f8dee3ca53c1f75e579e06bef7b9f274f0bddf956780ef03ae3c137c1f74e559e0fb902bcf06df875d790ef83ee2ca73c1f751579e07be8fb9f27cf07ddc951780ef13aebc107c9f74e545e0fb942be3fefdb42bdf0f3eea571e001ff52b4f071ff52bcf001ff52bcf041ff52bcf021ff52bcf061ff52bcf011fe5dd73c14779f73cf051de3d1f7c94772f001fe5dd0bc14779f722f051debd187c94772f011fe5dd4bc14779f732f051debd1c7c9477af001fe5dd2bc14779f72af051debd1a7c9477af011fe5dd6bc14779f73af051debd1e7c94776f001fe5dd83e0a3bc7b23f828efde04be16577e33f8ce77e5b780ef02577e2bf81ee7cad8cf5ce8ca6f07dfe35df921f0515ff80ef05de4caef04df12577e17f896baf2bbc1b7cc95df03bee5aefc5ef0ad70e5f7816fa52bbf1f7cadaefc01f0ad72e50f822fefca1f025f9b2b7f187c0557fe08f8da5df9a3e0eb70e58f81afd3953f0ebe2e57fe04f8ba5df993e0eb71e54f818fcee3d4cfd8e3d91e83a40369647dd4e6d688b6906f22b4a53f48f69a8e62d1b669bd1d18691f14c69eb1305ac6368fd1f27432688679454ba9ef1f9dc0d3c1c0c3d4cef0fb4797d7a676af4d39a87311b4b38ba19d19884bdba6f52e88cdb1cf518b7ab7dd259e167550e73fdc49ce9e3b4be948dbb0f95b88684b2f735b68dbd42ff58e41ec6e2f76de8b8dfd312da58eaf6e60ee6160b6dbed4b7ebbe1f1b5da6d8b728ae2e4a14d6b4083a4da84b133ce280ef9eba05c3363b82ed5233de8fc45ec3697695f22bbffb94eef7339a8d31bd1fefe20d9f6f7793c7d1eb3dd27ff9c3eccc1703c8439d0eb71d07a1eb4eb8bd1ae17b4a33a78fe6b63d2aec7e3a1f536e0a16b9c2ef0d1b502f1e37556eb1870fbfd5e570437f9ba81b12d82319f3c6378add3e631d27a1e18c9d7033cdd4c9af9fb7a89a70f9e971bbc3af4d93aa833cbf525538291df3fa8ae3dee166786db45dfc11f0d92edd31b18f4c2f18100f4093c0d03d08bda59cfc03339181e2338333478fac08d03970c1c389c01b43a0f135f3311cda8011f966b237c4130722804876469280487646b3c59700886eadbaf52b65934dc3070e2d8d0134f0e9c3c74fa8e53430387770fde88d4f51e3d92c6b50049d147cbc46078d0a63f4836791abc58a5926722bc4e60e0616a6778d29be4b5a9c16b530eead4c37b9318da9981b8b46d5ac70160f26176d2fb386150e3b505b37812bcfafb36d10651c0c7c1f6330ecebe57e7846d70f0242ef5187614d15ec9d91d6147056d6f6d47fdec616747f5ec8591edc8ed289d1d95b3a37076d4cd8eb2d951353b8a6647cdec28991d156b098aa35e1700cf5780d18e6ad9512c3b6a65bf49dab3821d85b2a34e7694c95e4dd86f29f60c6caf38edd9d09e05edd58efd3665bf59db338c3d7bdb33933d9bd8ab237b5564af62ed559d9d9959676cbdd37a83b18dc63619db6c6c8bb1adc6b619db6e6c87b19dc67619db6d6c8fb1bdc62e36f684a038a27c89b14b8d5d66ec89c62e377685b12b8d5d65ec6a63d718bbd6d875c6ae377683b1fdc60e183b68ec90b1c3c6068c1d3176a3b1a3c68e197b92b19b82e21d1e278c9d343668ec94b19b8d9d36762628ce12d959213b0b64677dec2c8f9dd5b1b33876d6c6ced2d859193b0b63675dee098ab32a7676c4ce86d891703bf26d47baedc8f63383e2c8b51da97e4e501c89b623cf76a4d98e2cdb91643b726c478aedc8b01d09b623bf76a4d78eecda915c3b726b476aedc8ac1d89b523af76a4d58eac3e1814474eed48a91d19b523a176e4d38e74da91cd8782e2c8a51da9b423937624d28e3cda91463bb2684712edc8a11d29b423837624d08efcd9913e3bb26747f2ecc89d1da9b323737624ee33c61e36f659639f33f679635f30f645635f32f6e5a098935f35f635635f37f60d63df34f62d63df36f61d63df35f63d63df37f603633f34f623633f36f688b19f18fba9b19f19fbb9b15f18fba5b15f19fbb5b1df18fbadb1df19fbbdb13f18fba3b13f19fbb3b1bf18fb6b303c6a8f1dc53fdd0a8d201f181a1a38716aa86568b0e5c42dc7878e9d3a7e47cb6dc7868eb60cde3a70fac8f1c1dbf0c36f775d130d8f6f387dfac01d2dc74e1e1eb8bd65f096a196c1232d07076f3979f80c7ee8cbee43f3cf8e78e0f0e1f8603fae790ca43fab30e89fdde768e26147e9b6fdad1241feb3920f4dabadac4157b8330b7d2bbdb47815d772e6f8e0504bbee5a4f97be0b8f9ccc0e1d6167cef8c11f9cc50cb99a103a7875a8e9c1e3cd1d2d68adb3d30a98246fc637a051f9a3963f42d0ffe1f68e5b57eb1020400", "privateFunctions": [ { "selector": { @@ -37,8 +37,8 @@ exports[`ContractClass creates a contract class from a contract compilation arti "isInternal": false } ], - "id": "0x2f406cdbb6fa7c3032f88fc8642750bcf3fad8215e9205159ac6ad4270dd1ec6", + "id": "0x1738259ae9a0ec25dd29d7a269df543975ed6901652d1335bca61e844f542096", "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x229f2e39e5a39d3d7c17cfe438f771f0120c8a4713d5b5e2af3ce2e799ff3811" + "publicBytecodeCommitment": "0x024f70e86b30a79b71987ef8cf7aa040206dbc37ca446743670fab781506248b" }" `; From cb1e2e302c83a65a9a3b657c002be1407ab76a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Fri, 22 Mar 2024 16:59:33 +0000 Subject: [PATCH 34/36] iupdate hex files --- .../src/fixtures/nested-call-private-kernel-init.hex | 2 +- .../src/fixtures/nested-call-private-kernel-inner.hex | 2 +- .../src/fixtures/nested-call-private-kernel-ordering.hex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-init.hex b/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-init.hex index 0e4647f2331..ca7f26083d7 100644 --- a/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-init.hex +++ b/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-init.hex @@ -1 +1 @@ -012241f345b07c56db7e294e2c5ed54d82a64db90fded7b28d2e435529df6f71af9f8c4401265e8b9ed5e467516840b4a93738d252ae67b8db649df98647d23e734f0134d700000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001012241f345b07c56db7e294e2c5ed54d82a64db90fded7b28d2e435529df6f71af9f8c44010000000000000000000000000000000000000000000000000000000000000000012241f345b07c56db7e294e2c5ed54d82a64db90fded7b28d2e435529df6f710000000000000000000000000000000000000000af9f8c44000000000001265e8b9ed5e467516840b4a93738d252ae67b8db649df98647d23e734f0134d700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006e9300a54e4ef726427ca380a004f96311ad780f5d2dacafa8f7a97a179a2d1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003579f468b2283611cc4d7adfbb93b8a4815d93ac0b1e1d11dace012cf73c7aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001012241f345b07c56db7e294e2c5ed54d82a64db90fded7b28d2e435529df6f710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004009bb0a86ebb01636865332b3ab8c3c46ae6d2148c59ce3d431798b0926d7cea00e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b80000000000000000000000000000000000000000000000000000000000000138000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f1371c1aa479d7cd2801b0f2203b6889a051b10f7c1195df845cc1985c12039b60f631bbbc88cff6a2075e290bb401efac78614b1948d7fcf2ee95eced96e56f01ff429915e11f4fef0121ffa71c37c46f5ab5be8a7fcb1c75e1be272b1d7c4e51a0c48a4ca89d949e9cf26eb9d19f7c019d49f006c5d813b23ee8821885f287500000000000000000000000000000000000000000000000000000000000000022b09ad2b1765e61b2203cd359f9b833c9c611271e5c80df92c35ef522d3731e42706fc59cda1c448173c4a7739dca4fd4325c970e6f035ed9929fd84719533bb0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0d6acfe435909b3bab09a066e43e6b96293a90b30d651d9ca1153bbd67c2564eaf9f8c44012b5af3b47f1a56cbe657242df76c4cdb1f3267f82fee618b887824c37654f0ab00000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010d6acfe435909b3bab09a066e43e6b96293a90b30d651d9ca1153bbd67c2564eaf9f8c440100000000000000000000000000000000000000000000000000000000000000000d6acfe435909b3bab09a066e43e6b96293a90b30d651d9ca1153bbd67c2564e0000000000000000000000000000000000000000af9f8c440000000000012b5af3b47f1a56cbe657242df76c4cdb1f3267f82fee618b887824c37654f0ab0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc478b4b5d837d322765fdaf914f2f0211a3b69209440be8f2815e79909cc05000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003579f468b2283611cc4d7adfbb93b8a4815d93ac0b1e1d11dace012cf73c7aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d6acfe435909b3bab09a066e43e6b96293a90b30d651d9ca1153bbd67c2564e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000040065a680851f49b5f35f270d7c12eb3da0436cde6a36c44529e54bb1367bcc4a00e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b80000000000000000000000000000000000000000000000000000000000000138000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0d974f1be97d8bf5960d3092c351db0db1c070f3e2cf0dc5d608320c13a8852922cba763d71b9e3a3fc72ac4563e7e4f96814232d3e49ec4168021fc6348f82009726875f143bca5160f179808c6b50dcce5030463e2a0e0dc748a27c1a323380e47c5a1b25275dc0ef4d1f91063c7bf6e7cb0fd8884cc40726cef6b8ed854e900000000000000000000000000000000000000000000000000000000000000022b09ad2b1765e61b2203cd359f9b833c9c611271e5c80df92c35ef522d3731e42706fc59cda1c448173c4a7739dca4fd4325c970e6f035ed9929fd84719533bb0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-inner.hex b/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-inner.hex index 89aa6b4b975..ab90ed468bc 100644 --- a/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-inner.hex +++ b/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-inner.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be2000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5523db965e4ceccdfdfd2e03ca00371c99d4e44eab1c1a9961089f04eaf6480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015a4077e390d955b1eaadd6fce2e68dc52fdf6b61869605782f89b8b319a610919d5714848f14aaee158c89b919018fe14df4da0bf053e76572749e7c79fde9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008d4d695766a616808caa331119da14269ac3271c251dec3a11df896131ba2c008d4d695766a616808caa331119da14269ac3271c251dec3a11df896131ba2c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d799018a5143b5406d2f66ff03e3e026396ea094ad3775bffc2e63f71c7ef4f000000030000000000000000000000000000000000000000000000000000000000000001002807c70858235323a27419dde0fc745fbab002f33c34d1dc41994b43d27d5e00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f8000000030198bc624121dc20ca9346776cefe5816f1c745b71d7c78bcd66c165ab2fd93cc000001801ede270b6a66d2c49eafb1dc2815aff988a10ab9d96cabc4a89d59e5b8259406000002000572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000001000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065fc0c660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000001e5533f995951f79050807511750359988348e7cb8a6d4feca2e56be08f7201b05f0e778ca470d8ea971daa525ad9654df5fa38aeb886b7f81baf1d6a63e35561e5f0937571725d7cd5a9d9b16d6e84bb9241002d843c07115f97ccd81778c8b1a877bd4951d7481a0f5d368f986b10cdbd1db091b07605e7b966cc2acf0edc80906bca10119d5714848f14aaee158c89b919018fe14df4da0bf053e76572749e7c79fde9a1a877bd4951d7481a0f5d368f986b10cdbd1db091b07605e7b966cc2acf0edc800000000000000000000000000000000000000000906bca1000000000003173812cb2d7243dc1f635ed13d44b8e073ca8d9471192fa4b324986ebe9595100000000000000000000000000000000000000000000000000000000000007a6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b800e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000042d799018a5143b5406d2f66ff03e3e026396ea094ad3775bffc2e63f71c7ef4f000000030000000000000000000000000000000000000000000000000000000000000001002807c70858235323a27419dde0fc745fbab002f33c34d1dc41994b43d27d5e00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f8000000030198bc624121dc20ca9346776cefe5816f1c745b71d7c78bcd66c165ab2fd93cc000001801ede270b6a66d2c49eafb1dc2815aff988a10ab9d96cabc4a89d59e5b8259406000002000572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000001000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065fc0c66000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f1206bd4ea8b05184c189fb035fd34a62f1b0bff732fe4bf0f2b0a1b75330c6f507c4047932d001dc63b0e8e7471fc6d2085380441776c1346c4d7a978112de0827b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed0299c25a4d23dbcf5f0968157e4c0a1cc47900a648874b61c852a22282121b2f00000000000000000000000000000000000000000000000000000000000000001e53e2a4a2ea07593ada9539cab59e6f37d7a01d7d402c51c3d2eb337a960dec006328febf3e7b2ff8d83c9f4f899571298aa72648945851ab77b1d7c6ee7e9e0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ff9885a915228167342db740f339b74fb90bb0ad202feeee1a1ce2121db6160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029c51935ff14d652e533bf4d0bf85d85b407026fb4bbb15edf6c159e720515471c5bdb9dcd963582d70a0697bf586b1517beb8596220e91f3984938b0da68c23000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008d4d695766a616808caa331119da14269ac3271c251dec3a11df896131ba2c008d4d695766a616808caa331119da14269ac3271c251dec3a11df896131ba2c000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123ccf8967636e4bdb4d1d2c36072e1f2b60366e314f052262dffe32a2348fa5000000030000000000000000000000000000000000000000000000000000000000000001009782bdaa49966105f4001ccbd0ef2437851f80549aef0f1343a3cbc8c7c6b200089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000301a4f3f24bb9fdfad2a8a1b8979719f0fe39743c5e78c650b70598008800e6e5600000180121a6ef2dda209fd123c9bfbc2e54d2519f7ddd4595c85076fc95eea02650600000002000572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000001000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065fdb63d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001010000002a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000001acf754fe33a94422b637f8b5b558c0f9055926cedf82d90dd6be0fa0d2dc82603208ed58b01a56dd766f72f6dee36ef8ae764ac6c3d65bf3a8286d1d0874a3a0d4b15b12aacf637e5c4b77264b73982a22954d06c1f1ac1fb9eef9b90cb4dbd1ce072e5d5339b532131c0fe5ac9fdcd527f17baf8969010fa8d2ca3465fc6b10906bca1011c5bdb9dcd963582d70a0697bf586b1517beb8596220e91f3984938b0da68c231ce072e5d5339b532131c0fe5ac9fdcd527f17baf8969010fa8d2ca3465fc6b100000000000000000000000000000000000000000906bca1000000000003173812cb2d7243dc1f635ed13d44b8e073ca8d9471192fa4b324986ebe9595100000000000000000000000000000000000000000000000000000000000007a6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b800e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004123ccf8967636e4bdb4d1d2c36072e1f2b60366e314f052262dffe32a2348fa5000000030000000000000000000000000000000000000000000000000000000000000001009782bdaa49966105f4001ccbd0ef2437851f80549aef0f1343a3cbc8c7c6b200089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000301a4f3f24bb9fdfad2a8a1b8979719f0fe39743c5e78c650b70598008800e6e5600000180121a6ef2dda209fd123c9bfbc2e54d2519f7ddd4595c85076fc95eea02650600000002000572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000001000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000065fdb63d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f1206bd4ea8b05184c189fb035fd34a62f1b0bff732fe4bf0f2b0a1b75330c6f510e32b086b9caaa8e5db39aa85ca84c87fb2657b0a4ca62899f38d9720c75fed27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed2603812a701a55b772881084606000f6978eab86856fdeb204e03e125e16594400000000000000000000000000000000000000000000000000000000000000001e53e2a4a2ea07593ada9539cab59e6f37d7a01d7d402c51c3d2eb337a960dec006328febf3e7b2ff8d83c9f4f899571298aa72648945851ab77b1d7c6ee7e9e0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-ordering.hex b/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-ordering.hex index 9a9e4c25b9e..3969f2f1a0d 100644 --- a/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-ordering.hex +++ b/yarn-project/noir-protocol-circuits-types/src/fixtures/nested-call-private-kernel-ordering.hex @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be2000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000178208c093e3944e4f2b13d0bf421b3a3910e2c86af2f2fc45b304457839dcf10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000232f8201f6ff6b414f9b54af28b9a33cbe45817a0f7fe0cd1e8712e86158c2c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e39690b5006763b3b7c0929ee4deb8fbe7cb9fc5aa86a270e4b7a90be7d254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011cd3c5ccb8644ae3a8cbfad44981cabd453de0e0648de28ff014c67ddcdd885d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a6f11d0fee649628137ebedf70c9cf2e7b081a9e284c9608fc5741fa8fc7a006003947a07e21c81ce2062539d6d6864fe999b58b03fc46f6c190d9eac9b3900000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b0000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000101000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000000022e7b215f6cd58e2d7ad5641f7b39178f03c673b5018bed2fd2d2ffb4b3658b52530d38b1644323d271542478281cfd55e816d6ae19f2f0da539762e0494b6fe2f1b66a8ced84b80de4e4129c44f7f7e68e91d75a55db7dd2ae34f93c010ac77178208c093e3944e4f2b13d0bf421b3a3910e2c86af2f2fc45b304457839dcf10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000232f8201f6ff6b414f9b54af28b9a33cbe45817a0f7fe0cd1e8712e86158c2c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e39690b5006763b3b7c0929ee4deb8fbe7cb9fc5aa86a270e4b7a90be7d254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011cd3c5ccb8644ae3a8cbfad44981cabd453de0e0648de28ff014c67ddcdd885d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000800000000000000080000000000000008000000000000000800000000000000080000000000000008000000000000000800000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000001000000bd300000bd400000bd500000bd600000bd700000bd800000bd900000bda00000bdb00000bdc00000bdd00000bde00000bdf00000be000000be100000be20000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002605e768b89371e46f18755f9b0be4964fad53e67701419c4d9596f0369ee351000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a03d276f0462bad174535a70997699e1fcbeff04a9f560190a2e9d3d69658e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008eb71ac834d9a1e0db02090cede7dbde3d37c85e2186a4a8f4c68012f8315b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011c1f48a1f53e3ee4c21bb5deb269477d02a9bea628c817328fea892c8c7e187b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003100e66eb6812178264cd03595ddc65ec007a177d3b06abc1d8fc27357eca006003947a07e21c81ce2062539d6d6864fe999b58b03fc46f6c190d9eac9b3900000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000000016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000000800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b0000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001010000002a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f00000000184661d7fd830dc077c55fc998a97cbf6f24ebffc66848d0bc8510373515b75e1fd66bdaf41f6e74674046b5f02ad39de1b211cb9f9f124738186cf102405a130ce00c910fd01ceafcdbdfdecdf19d7bd71c11b0c05071f966a823df937225342605e768b89371e46f18755f9b0be4964fad53e67701419c4d9596f0369ee3510000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a03d276f0462bad174535a70997699e1fcbeff04a9f560190a2e9d3d69658e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008eb71ac834d9a1e0db02090cede7dbde3d37c85e2186a4a8f4c68012f8315b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011c1f48a1f53e3ee4c21bb5deb269477d02a9bea628c817328fea892c8c7e187b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000800000000000000080000000000000008000000000000000800000000000000080000000000000008000000000000000800000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file From 6f69bb9ac084d69a8032ff296c6eb7098052edc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Fri, 22 Mar 2024 17:14:00 +0000 Subject: [PATCH 35/36] Add lost changes --- .../src/structs/kernel/rollup_kernel_circuit_public_inputs.ts | 2 +- .../prover-client/src/orchestrator/block-building-helpers.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts index 45371bbed7d..9b973842448 100644 --- a/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/rollup_kernel_circuit_public_inputs.ts @@ -30,7 +30,7 @@ export class RollupKernelCircuitPublicInputs { ) {} toBuffer() { - return serializeToBuffer(this.aggregationObject, this.end, this.constants); + return serializeToBuffer(this.aggregationObject, this.end, this.constants, this.rollupValidationRequests); } /** diff --git a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts index 07ed89f7a6c..3376ec35d62 100644 --- a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts +++ b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts @@ -362,6 +362,7 @@ export function getKernelDataFor(tx: ProcessedTx, vks: VerificationKeys): Rollup tx.data.aggregationObject, tx.data.combinedData, tx.data.constants, + tx.data.rollupValidationRequests, ); return new RollupKernelData( inputs, From e800e35ba92e25c90ebfff1b15132399e94b2246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Fri, 22 Mar 2024 17:34:32 +0000 Subject: [PATCH 36/36] if i ever have to update one more snapshot i swear i will --- .../src/__snapshots__/index.test.ts.snap | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/yarn-project/noir-protocol-circuits-types/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-protocol-circuits-types/src/__snapshots__/index.test.ts.snap index f9463a7ba89..63667396b24 100644 --- a/yarn-project/noir-protocol-circuits-types/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-protocol-circuits-types/src/__snapshots__/index.test.ts.snap @@ -38,19 +38,19 @@ PrivateKernelInnerCircuitPublicInputs { "inHash": Buffer<0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c>, "outHash": Buffer<0x0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3>, "txTreeHeight": Fr<0x0000000000000000000000000000000000000000000000000000000000000001>, - "txsEffectsHash": Buffer<0x002807c70858235323a27419dde0fc745fbab002f33c34d1dc41994b43d27d5e>, + "txsEffectsHash": Buffer<0x009782bdaa49966105f4001ccbd0ef2437851f80549aef0f1343a3cbc8c7c6b2>, }, "globalVariables": { "blockNumber": "0x0000000000000000000000000000000000000000000000000000000000000003", "chainId": "0x0000000000000000000000000000000000000000000000000000000000007a69", "coinbase": "0x0000000000000000000000000000000000000000", "feeRecipient": "0x0000000000000000000000000000000000000000000000000000000000000000", - "timestamp": "0x0000000000000000000000000000000000000000000000000000000065fc0c66", + "timestamp": "0x0000000000000000000000000000000000000000000000000000000065fdb63d", "version": "0x0000000000000000000000000000000000000000000000000000000000000001", }, "lastArchive": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 3, - "root": Fr<0x2d799018a5143b5406d2f66ff03e3e026396ea094ad3775bffc2e63f71c7ef4f>, + "root": Fr<0x123ccf8967636e4bdb4d1d2c36072e1f2b60366e314f052262dffe32a2348fa5>, }, "state": StateReference { "l1ToL2MessageTree": AppendOnlyTreeSnapshot { @@ -60,11 +60,11 @@ PrivateKernelInnerCircuitPublicInputs { "partial": PartialStateReference { "noteHashTree": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 384, - "root": Fr<0x198bc624121dc20ca9346776cefe5816f1c745b71d7c78bcd66c165ab2fd93cc>, + "root": Fr<0x1a4f3f24bb9fdfad2a8a1b8979719f0fe39743c5e78c650b70598008800e6e56>, }, "nullifierTree": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 512, - "root": Fr<0x1ede270b6a66d2c49eafb1dc2815aff988a10ab9d96cabc4a89d59e5b8259406>, + "root": Fr<0x121a6ef2dda209fd123c9bfbc2e54d2519f7ddd4595c85076fc95eea02650600>, }, "publicDataTree": AppendOnlyTreeSnapshot { "nextAvailableLeafIndex": 256, @@ -351,7 +351,7 @@ PrivateKernelInnerCircuitPublicInputs { SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, "noteHash": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, - "value": Fr<0x0a5523db965e4ceccdfdfd2e03ca00371c99d4e44eab1c1a9961089f04eaf648>, + "value": Fr<0x24ff9885a915228167342db740f339b74fb90bb0ad202feeee1a1ce2121db616>, }, SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, @@ -1006,6 +1006,12 @@ PrivateKernelInnerCircuitPublicInputs { "isPrivate": true, "minRevertibleSideEffectCounter": Fr<0x0000000000000000000000000000000000000000000000000000000000000002>, "validationRequests": ValidationRequests { + "forRollup": RollupValidationRequests { + "maxBlockNumber": MaxBlockNumber { + "isSome": false, + "value": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, + }, + }, "noteHashReadRequests": [ SideEffect { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, @@ -1891,7 +1897,7 @@ PrivateKernelTailCircuitPublicInputs { "end": PrivateAccumulatedRevertibleData { "encryptedLogPreimagesLength": Fr<0x0000000000000000000000000000000000000000000000000000000000000138>, "encryptedLogsHash": [ - Fr<0x000a6f11d0fee649628137ebedf70c9cf2e7b081a9e284c9608fc5741fa8fc7a>, + Fr<0x0003100e66eb6812178264cd03595ddc65ec007a177d3b06abc1d8fc27357eca>, ], "newL2ToL1Msgs": [ Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, @@ -1900,7 +1906,7 @@ PrivateKernelTailCircuitPublicInputs { "newNoteHashes": [ SideEffect { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000002>, - "value": Fr<0x0f09b243c65692d3eeebc1521a64db5de9d9cf48fb8aa213693bf7989b195210>, + "value": Fr<0x15561612cd1c56ed4f63611e7f6a40e30fb2655e49e5a808e22a3168fa406327>, }, SideEffect { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, @@ -2127,12 +2133,12 @@ PrivateKernelTailCircuitPublicInputs { SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000001>, "noteHash": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, - "value": Fr<0x00e39690b5006763b3b7c0929ee4deb8fbe7cb9fc5aa86a270e4b7a90be7d254>, + "value": Fr<0x08eb71ac834d9a1e0db02090cede7dbde3d37c85e2186a4a8f4c68012f8315b5>, }, SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000003>, "noteHash": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, - "value": Fr<0x1cd3c5ccb8644ae3a8cbfad44981cabd453de0e0648de28ff014c67ddcdd885d>, + "value": Fr<0x1c1f48a1f53e3ee4c21bb5deb269477d02a9bea628c817328fea892c8c7e187b>, }, SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, @@ -2583,7 +2589,7 @@ PrivateKernelTailCircuitPublicInputs { SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, "noteHash": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, - "value": Fr<0x232f8201f6ff6b414f9b54af28b9a33cbe45817a0f7fe0cd1e8712e86158c2c3>, + "value": Fr<0x05a03d276f0462bad174535a70997699e1fcbeff04a9f560190a2e9d3d69658e>, }, SideEffectLinkedToNoteHash { "counter": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, @@ -2660,5 +2666,11 @@ PrivateKernelTailCircuitPublicInputs { "needsAppLogic": false, "needsSetup": false, "needsTeardown": false, + "rollupValidationRequests": RollupValidationRequests { + "maxBlockNumber": MaxBlockNumber { + "isSome": false, + "value": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, + }, + }, } `;